把p7b格式证书转换成cer格式证书
这个问题,需要追溯到我集成肯尼亚一家支付公司Safaricom的M-Pesa在线支付,我司需要集成这个在线支付手段在我们的站点中(ke)。在进行了一系列的处理后,最后需要进行测试https请求。下面简单介绍下具体操作,希望能帮到你。
Step 1:生成我司的CSR文件
这个很简单,可以在网上找一个在线生成的地址及进行处理,在线生成CSR和Key,输入对应的信息,然后生成了两个文件,一个Private Key,这是私钥,安装证书的时候需要;另一个就是CSR文件,这个需要发给对方公司签名,但是这个原文件在安装证书的时候也需要用到。
Step 2:拿到Safaricom发给我的证书
把CSR发给他们后,他们把证书发给了我,我是刚刚接触这个证书,我就天真的把证书发给了运维同事,然后运维告知我这个证书不能用,我们系统是用的Nginx。然后我问对方要Nginx的证书,因为是外国人,所以交流很难,而且对方也不懂技术,很尴尬,我只好自己在网上找答案,百度了很久也没有找到答案,都没有找到对应的解决方案,最后我在google上找到了一篇文章,文章也是说的他们公司的证书。文献资料。PS:我拿到的证书里面包含了四个证书:根证书,策略证书,发行正式,服务端证书。如下图:
Step 3:把.p7b转换成.cer格式
我需要从.p7b中提取出所有的证书,前提是你的电脑中安装了Openssl。下面我们把Safaricom公司颁发的证书称为:safaricom_b2c.p7b。
首先,将证书从DER转换为PEM格式:
$ openssl pkcs7 -inform der -in safaricom_b2c.p7b -out safaricom_b2c_readable.p7b
然后你编辑转换后的证书看到的是这样的:
-----BEGIN PKCS7-----
a base64 encoded string
-----END PKCS7-----
接下来,通过运行以下命令来提取证书:
$ openssl pkcs7 -print_certs -in safaricom_b2c_readable.p7b -out safaricom_b2c_readable.cer
subject=/DC=NET/DC=LABSAFCOM/CN=LABSAFCOM-PKIISSUE03-CA
issuer=/DC=NET/DC=LABSAFCOM/CN=LABSAFCOM-PKIPOLICY-CA
-----END CERTIFICATE-----
----BEGIN CERTIFICATE-----
a base64 encoded string
最后你打开证书的路径是这样的:
Step:4 把证书编码改成Base 64 编码 X.509(.CER) (S)
右键打开证书---->详细信息---->复制到文件---->下一步:选择Base 64编码---->下一步: 导出