PEM
它是最通用的证书格式,证书颁发机构在发行PEM证书时经常使用.pem,.cer,.crt,和.key作为证书文件后缀。
它是使用base64编码的ASCII字符串,起始包含:"-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----"
这几种证书可以使用PEM格式:Server certificates, intermediate certificates, and private keys 。
Apache和其他类似的服务器使用PEM格式的证书。几个PEM证书,甚至是私钥可以一个接一个地放在同一个文件。但有些平台,比如Apache希望各个证书和私钥存放在一个单独的文件中。
DER
它是一个二进制文件,后缀可以是.der或.cer。要区分一个.cer文件是DER还是PEM,只有打开来看有没有BEGIN/END字样。
所有的证书和私钥都可以编码成DER的格式。
DER格式一般用于Java平台。
PKCS#7/P7B
它是一种Base64编码的ASCII文本文件,后缀一般为.p7b或.p7c.
证书中包含:"-----BEGIN PKCS7-----" and "-----END PKCS7-----"
P7B文件只能包含certificates and chain certificates,不能包含私钥。
Windows和Java Tomcat支持这种格式。
PKCS#12/PFX
它是一个二进制文件,后缀为.pfx或.p12
它可以把server certificate, any intermediate certificates, and the private key加密到一个文件中。
它一般用于Windows平台来导入导出证书和私钥。
When converting a PFX file to PEM format, OpenSSL will put all the certificates and the private key into a single file. You will need to open the file in a text editor and copy each certificate and private key (including the BEGIN/END statments) to its own individual text file and save them as certificate.cer, CACert.cer, and privateKey.key respectively.
使用OPENSSL来转换证书:
OpenSSL Convert PEM
Convert PEM to DER
openssl x509 -outform der -in certificate.pem -out certificate.der
Convert PEM to P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
Convert PEM to PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL Convert DER
Convert DER to PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL Convert P7B
Convert P7B to PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
Convert P7B to PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL Convert PFX
Convert PFX to PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes