常见证书格式及转换

2,582 阅读2分钟

主流证书文件格式:

  • .DER .CER,文件是二进制格式,只保存证书,不保存私钥。
  • .PEM,一般是文本格式,可保存证书,可保存私钥。
  • .CRT,可以是二进制格式,可以是文本格式,与 .DER 格式相同,不保存私钥。
  • .PFX .P12,二进制格式,同时包含证书和私钥,一般有密码保护。
  • .JKS,二进制格式,同时包含证书和私钥,一般有密码保护。

DER

该格式是二进制文件内容,Java 和 Windows 服务器偏向于使用这种编码格式;

windows默认可查看此格式的证书文件内容;

fiddler导出的证书采用此格式。

OpenSSL 查看

openssl x509 -in src.der -inform der -text -noout

转换为 PEM:

openssl x509 -in src.crt -inform der -outform pem -out out.pem

PEM

Privacy Enhanced Mail,一般为文本格式,以 -----BEGIN... 开头,以 -----END... 结尾,中间的内容是 BASE64 编码;

这种格式可以保存证书内容和私钥,有时我们也把PEM 格式的私钥的后缀改为 .key 以区别证书与私钥,具体情况以文件实际内容为准。

这种格式常用于 Apache 和 Nginx 服务器。

charles保存的证书文件采用此文件格式。

OpenSSL 查看:

openssl x509 -in src.pem -text -noout

转换为 DER:

openssl x509 -in src.crt -outform der -out out.der

CRT

Certificate 的简称,有可能是 PEM 编码格式,也有可能是 DER 编码格式。查看参考前两种格式。

转换为cer

openssl x509 -inform pem -in src.crt -outform der -out out.cer

PFX/p12

Predecessor of PKCS#12,这种格式是二进制格式,且证书和私钥存在一个 PFX 文件中。一般用于 Windows 上的 IIS 服务器。改格式的文件一般会有一个密码用于保证私钥的安全。

OpenSSL 查看:

openssl pkcs12 -in src.pfx

转换为 PEM:

openssl pkcs12 -in src.pfx -out out.pem -nodes

转换为crt

转换为crt和key

openssl pkcs12 -in src.pfx -out out.crt -nokeys -clcerts
openssl pkcs12 -in src.pfx -nocerts -out out.key

JKS

Java Key Storage,很容易知道这是 JAVA 的专属格式,利用 JAVA 的一个叫 keytool 的工具可以进行格式转换。一般用于 Tomcat 服务器。

转换工具

点击这里