项目要用Https,自然需要知名机构的SSL证书。这里记录一下让人头疼的各种证书后缀。
① x.509
X.509是常见通用的证书格式,包含证书持有人的公钥,加密算法等信息。。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。
② pkcs1-pkcs12
公钥加密(非对称加密)的一种标准(Pbulic Key Cryptography Standards),一般存储为*.pn,*.p12
是包含证书和密钥的封装格式。
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
PKCS#7 常用的后缀是: .P7B .P7C .SPC
PKCS#12 常用的后缀有: .P12 .PFX
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式
p10是证书请求
p7r是CA对证书请求的回复,只用于导入
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥。
③ *.der
ASN.1是一套完整的数据结构与数据存储格式描述,BER/DER是ASN.1的二进制编码方式
④ *.pem
Privacy Enhanced Mail,证书或密钥的Base64文本存储格式,可以单独存放证书或密钥,也可以同时存放证书或密钥。.pem跟crt/cer的区别是它以Ascii来表示。
也有说PEM是DER编码再进行Base64编码后的文本格式。
公钥和私钥一般都是用PEM方式保存,但是公钥文件还不足以成为证书,还需要CA的签名;
CSR是证书签名请求,CA用自己的私钥文件签名之后生成CRT文件就是完整的证书了。
一般 Apache 和 Nginx 服务器应用偏向于使用 PEM 这种编码格式。
⑤ *.key
单独存放的pem格式的密钥,一般保存为*.key。
⑥*.cer *.crt
两个指的都是证书。windows下叫cer,linux下叫crt;存储格式可以为pem也可以为der。.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。
⑦ *.csr
证书签名请求(Certificate sign request),包含证书持有人的信息,如国家,邮件,域名等。
⑧ *.pfx
微软iis的实现。用于存放个人证书/私钥,通常包含保护密码,2进制方式
⑨ *.jks
Java Key Store–Java 的 Keytool实现的证书格式。
⑩ *.crl
证书吊销列表(Certificate Revocation List)。
使用openssl进行证书转换:http://www.netkiller.cn/cryptography/openssl/format.html