证书格式及转换


证书格式介绍

PEM

PEM 格式是证书颁发机构颁发证书最常用的格式。PEM 证书通常具有以下扩展:.pem、.crt、.cer 和 .key。它们是 Base64编码的 ASCII 文件,包含“—— BEGIN CERTIFICATE ——”和“—— END CERTIFICATE ——”语句。

服务器证书、中间证书和私钥都可以放入 PEM 格式。

Apache 和其他类似的服务器使用 PEM 格式的证书。PEM 证书可以包含私钥,但大多数平台希望证书和私钥在单独的文件中,比如 Apache。

DER

DER 格式只是证书的二进制格式,而不是 ASCII PEM 格式。文件扩展名是 .der 和 .cer。

唯一能区分 DER .cer 和 PEM .cer 的方法是,在文本编辑器中打开它并查找 BEGIN/END 语句。

所有类型的证书和私钥都可以用 DER 格式进行编码。DER 通常用于 Java 平台。

PKCS#7/P7B

PKCS # 7或 P7B 格式通常以 Base64 ASCII 格式存储,文件扩展名为 .p7b 和 .p7c。

P7B 证书包含“-----BEGIN PKCS7-----”和“-----END PKCS7-----”语句。

P7B 文件只包含证书和链证书,而不包含私钥。

一些平台支持 P7B 文件,包括 Microsoft Windows 和 Java Tomcat。

PKCS#12/PFX

PKCS # 12或 PFX 格式是一种二进制格式,用于在一个加密文件中存储服务器证书、任何中间证书和私钥。PFX 文件通常具有扩展名,如 .pfx 和 .p12。

PFX 文件通常在 Windows 计算机上用于导入和导出证书和私钥。

在将 PFX 文件转换为 PEM 格式时,OpenSSL 将把所有证书和私钥放到一个文件中。您需要在文本编辑器中打开该文件,并将每个证书和私钥(包括 BEGIN/END 语句)复制到它自己的单独文本文件中,并将它们分别保存为 certificate.cer、 CACert.cer 和 privateKey.key。


证书格式转换脚本

PEM 转换其他格式

PEM 转 DER

openssl x509 -outform der -in certificate.pem -out certificate.der

PEM 转 P7B

openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer

PEM 转 PFX

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

DER 转换其他格式

DER 转 PEM

openssl x509 -inform der -in certificate.cer -out certificate.pem

P7B 转换其他格式

P7B 转 PEM

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer

P7B 转 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

PFX 转换其他格式

PFX 转 PEM

openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes