该文章转载自 OHTTPS.COM - 免费申请HTTPS通配符证书、自动更新、自动部署
在部署HTTPS证书时,不同的服务器我们需要用到不同格式的证书文件,常见的证书文件格式有以下几种:
-
PEM
- 适用于Apache、Nginx、Candy Server等Web服务器
- 常见的文件后缀为.pem、.crt、.cer、.key
- 可以存放证书或私钥,或者两者都包含
- .key后缀一般只用于证书私钥文件
-
PFX
- 适用于IIS等Web服务器
- 常见的文件后缀为.pfx、.p12
- 同时包含证书和私钥,且一般有密码保护
-
JKS
- 适用于Tomcat、Weblogic、JBoss、Jetty等Web服务器
- 常见的文件后缀为.jks
Let's Encrypt颁发的HTTPS证书一般包括以下几个文件:
- cert.key(PEM格式):私钥文件
- cert.cer(PEM格式):证书文件
- fullchain.cer(PEM格式):包含证书和中间证书
下面我们介绍如何使用cert.key、cert.cer、fullchain.cer生成cert.pfx、cert.jks,以及它们之间如何相互转换
-
PEM ===> PFX
- 工具:openssl
- 命令:使用cert.key和fullchain.cer文件生成cert.pfx
openssl pkcs12 -export -out cert.pfx -inkey cert.key -in fullchain.cer
-
PFX ===> JKS
- 工具:keytool
- 命令:使用cert.pfx生成cert.jks
keytool -importkeystore -srckeystore cert.pfx -destkeystore cert.jks -srcstoretype PKCS12 -deststoretype JKS
-
PEM ===> JKS
- 需要使用上面的两个方法,先将PEM文件转换为PFX文件,然后再将PFX文件转换为JKS文件
-
PFX ===> PEM
- 工具:openssl
- 命令1:使用cert.pfx文件生成临时文件temp.cer,temp.cer中包含了证书和私钥
openssl pkcs12 -in cert.pfx -nodes -out temp.cer
- 命令2:使用临时文件temp.cer文件生成私钥文件cert.key
openssl rsa -in temp.cer -out cert.key
- 命令3:使用临时文件temp.cer文件生成证书文件cert.cer
openssl x509 -in temp.cer -out cert.cer
- 命令4:使用cert.pfx生成中间证书文件chain.cer,合并cert.cer、空白行、chain.cer即可得到fullchain.cer
openssl pkcs12 -in cert.pfx -cacerts -nokeys -chain | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > chain.cer echo '\n' > emptyline.cer cat cert.cer emptyline.cer chain.cer> fullchain.cer
-
JKS ===> PFX
- 工具:keytool
- 命令:使用cert.jks生成cert.pfx
keytool -importkeystore -srckeystore cert.jks -destkeystore cert.pfx -srcstoretype JKS -deststoretype PKCS12
除了以上这些方法之外,还可以使用在线工具进行证书格式转换,点击证书格式转换工具进行在线格式转换。