腾讯信鸽后台需要我们上传pem类型的文件 而我们从苹果开发者后台下载的推送证书是cer格式,这之间就需要转换
pem, p12 , cer 这几个证书的区别:
PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:
PKCS#7 Cryptographic Message Syntax Standard
PKCS#10 Certification Request Standard
PKCS#12 Personal Information Exchange Syntax Standard
X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。
PKCS#7 常用的后缀是: .P7B .P7C .SPC
PKCS#12 常用的后缀有: .P12 .PFX
X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRT
X.509 PAM 编码(Base64)的后缀是: .PEM .CER .CRT
.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
.pem跟crt/cer的区别是它以Ascii来表示。
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
p10是证书请求
p7r是CA对证书请求的回复,只用于导入
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。
从这段话可以看出:
.cer证书是以二进制形式存放公钥的
.p12是用于存放私钥的
.pem和cer是一样的,唯一的区别是以ASCII来表示的
说到公钥和私钥就要总结下对称加密和非对称加密
对称加密(Symmetric Cryptography)
对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。
非对称加密(Asymmetric Cryptography)
非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
举例说明
对称加密:
A要向B发送个重要文件这个文件只有一把钥匙可以打开,A向B发送文件的时候也要把密钥发送给B这样B在收到文件后能够通过密钥去解密
非对称加密:
同样是A要发送文件给B 那么B同时有一把公钥和一把密钥,B把公钥公示出去,任何人都可以拿的到,所以A就能拿到B的公钥对A要发送的文件进行加密,当B收到文件后拿到B的私钥就可以对文件解密,这样就算发送的过程中文件被别人截取,别人也解不开,因为只有B自己有能解开文件的密钥。
言归正传:
当我们下载好cer格式的推送证书后,就可以添加到钥匙串中
然后在钥匙串访问-->证书中找到添加进来的推送证书
然后右键导出证书到桌面,文件格式选择.p12格式,并设置好密码
然后打开终端
LuoerliudeMini:~ liuwenping$ cd Desktop
openssl pkcs12 -in test.p12 -out test.pem -nodes
输入之前设置的密码就能在桌面上找到新生成的pem格式的证书。