同事给了一个pem格式的证书,但是web服务器是tomcat,没法直接使用pem格式的证书,需要进行格式转换。我们看看ssl证书有哪些格式,使用场景有哪些,不同证书格式之间如何转换。
.pem,.crt,.cer,.key-----BEGIN CERTIFICATE-----
MIIFajCCBFKgAwIBAgISBEBR8n... (Base64编码数据)
-----END CERTIFICATE-----
.der, .cer.p7b,.p7c证书1 (服务器证书)
↓
证书2 (中间CA)
↓
证书3 (根CA)
.p12, .pfx.jks.cer可能是PEM或DER.crt通常是PEM格式(Linux常见)证书格式对比总结
格式 | 扩展名 | 是否含私钥 | 编码方式 | 适用场景 |
|---|---|---|---|---|
PEM | .pem, .crt, .key | ✅(通常分开) | Base64 文本 | Nginx, Apache, Linux |
DER | .der, .cer | ❌(仅证书) | 二进制 | Java, Windows |
PKCS#7/P7B | .p7b, .p7c | ❌(不含私钥) | Base64 文本 | Windows IIS, Java |
PKCS#12/PFX | .pfx, .p12 | ✅ | 二进制(加密) | Windows, Tomcat |
JKS | .jks | ✅ | 二进制(Java 专用) | Java 应用 |
1.1 将pem格式证书转换成pfx格式,并设置私钥密码为123456
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.pem -certfile ca-chain.pem -passout pass:123456
1.2 查看pfx证书内容
openssl pkcs12 -in certificate.pfx -passin pass:123456 -passout pass:123456
2.1 从pfx证书中提取私钥和pem证书
openssl pkcs12 -in certificate.pfx -nocerts -nodes -out key.pem # 私钥
openssl pkcs12 -in certificate.pfx -clcerts -nokeys -out certificate.pem # 证书
2.2 查看私钥的内容:
openssl rsa -in key.pem -text -noout
2.3 查看pem格式证书内容:
openssl x509 -in certificate.pem -text -noout
3.1 将pem格式证书转换成der格式证书
openssl x509 -in certificate.pem -inform PEM -out certificate.der -outform DER
3.2 查看der格式证书内容:
openssl x509 -in certificate.der -inform der -text -noout
4.1 der格式证书转pem格式证书
openssl x509 -in certificate.der -inform DER -out certificate.pem -outform PEM
4.2 查看pem格式证书内容:
openssl x509 -in certificate.pem -text -noout
5.1 pem格式证书转p7b格式证书
openssl crl2pkcs7 -nocrl -certfile chain.pem -out chain.p7b
5.2 查看p7b格式证书内容
openssl pkcs7 -in chain.p7b -inform pem -print_certs -noout -text
6.1 p7b格式证书转pem
openssl pkcs7 -print_certs -in chain.p7b -out certificate.pem
6.2 查看pem格式证书内容:
openssl x509 -in certificate.pem -text -noout
7.1 pfx证书转jks格式证书
keytool -importkeystore -srckeystore certificate.pfx -destkeystore keystore.jks -srcstoretype PKCS12 -deststorepass jkspass123
7.2 验证JKS内容
keytool -list -v -keystore keystore.jks -storepass jkspass123
总结:
pem格式的证书是不能直接给tomcat使用的,需要转换成pfx或者jks格式,根据不同场合使用不同格式的证书,但还是希望有一天ssl证书能统一格式^_^