Skip to main content

SSL证书格式转换教程:PEM、PFX、JKS等格式互转

· 5 min read
OHTTPS

SSL证书有多种格式,如PEM、PFX、JKS、DER等。不同的服务器和应用可能需要不同的证书格式。本文将详细介绍如何在各种SSL证书格式之间进行转换,包括转换命令和使用场景。

一、常见证书格式

1. PEM格式

特点

  • Base64编码的文本格式
  • 最常见的格式
  • 文件扩展名:.pem、.crt、.cer、.key

使用场景

  • Nginx、Apache等Web服务器
  • Linux系统
  • 大多数Unix系统

2. PFX/P12格式

特点

  • 二进制格式
  • 包含证书和私钥
  • 通常需要密码保护
  • 文件扩展名:.pfx、.p12

使用场景

  • Windows IIS
  • Windows系统
  • 需要同时传输证书和私钥的场景

3. JKS格式

特点

  • Java密钥库格式
  • 二进制格式
  • 可以包含多个证书
  • 文件扩展名:.jks、.keystore

使用场景

  • Java应用
  • Tomcat服务器
  • 需要Java密钥库的场景

4. DER格式

特点

  • 二进制格式
  • ASN.1编码
  • 文件扩展名:.der、.cer

使用场景

  • 某些Windows应用
  • 需要二进制格式的场景

二、PEM格式转换

1. PEM转PFX

# 使用openssl转换
openssl pkcs12 -export \
-out certificate.pfx \
-inkey private.key \
-in certificate.crt \
-certfile chain.crt \
-passout pass:your_password

参数说明

  • -out:输出文件
  • -inkey:私钥文件
  • -in:证书文件
  • -certfile:证书链文件(可选)
  • -passout:设置密码

2. PEM转JKS

# 先转换为PKCS12,再转换为JKS
openssl pkcs12 -export \
-out certificate.p12 \
-inkey private.key \
-in certificate.crt \
-certfile chain.crt \
-passout pass:your_password

# 使用keytool转换为JKS
keytool -importkeystore \
-srckeystore certificate.p12 \
-srcstoretype PKCS12 \
-srcstorepass your_password \
-destkeystore certificate.jks \
-deststoretype JKS \
-deststorepass your_password

3. PEM转DER

# 证书转DER
openssl x509 -in certificate.crt \
-outform DER \
-out certificate.der

# 私钥转DER
openssl rsa -in private.key \
-outform DER \
-out private.der

三、PFX格式转换

1. PFX转PEM

# 提取证书
openssl pkcs12 -in certificate.pfx \
-clcerts -nokeys \
-out certificate.crt \
-passin pass:your_password

# 提取私钥
openssl pkcs12 -in certificate.pfx \
-nocerts -nodes \
-out private.key \
-passin pass:your_password

# 提取证书链
openssl pkcs12 -in certificate.pfx \
-cacerts -nokeys \
-out chain.crt \
-passin pass:your_password

2. PFX转JKS

# 使用keytool转换
keytool -importkeystore \
-srckeystore certificate.pfx \
-srcstoretype PKCS12 \
-srcstorepass your_password \
-destkeystore certificate.jks \
-deststoretype JKS \
-deststorepass your_password

四、JKS格式转换

1. JKS转PEM

# 先转换为PKCS12
keytool -importkeystore \
-srckeystore certificate.jks \
-srcstoretype JKS \
-srcstorepass your_password \
-destkeystore certificate.p12 \
-deststoretype PKCS12 \
-deststorepass your_password

# 再转换为PEM
openssl pkcs12 -in certificate.p12 \
-nodes \
-out certificate.pem \
-passin pass:your_password

2. JKS转PFX

# 直接转换
keytool -importkeystore \
-srckeystore certificate.jks \
-srcstoretype JKS \
-srcstorepass your_password \
-destkeystore certificate.pfx \
-deststoretype PKCS12 \
-deststorepass your_password

五、DER格式转换

1. DER转PEM

# 证书转PEM
openssl x509 -inform DER \
-in certificate.der \
-out certificate.crt

# 私钥转PEM
openssl rsa -inform DER \
-in private.der \
-out private.key

2. PEM转DER

# 证书转DER
openssl x509 -outform DER \
-in certificate.crt \
-out certificate.der

# 私钥转DER
openssl rsa -outform DER \
-in private.key \
-out private.der

六、完整证书链转换

1. 合并证书链为PEM

# 合并证书和证书链
cat certificate.crt chain.crt > fullchain.pem

2. 从PFX提取完整链

# 提取完整证书链
openssl pkcs12 -in certificate.pfx \
-nodes \
-out fullchain.pem \
-passin pass:your_password

七、常见转换场景

1. Nginx/Apache使用

需要格式:PEM

转换方法

  • 如果已有PFX,转换为PEM
  • 如果已有JKS,先转PFX再转PEM

2. Windows IIS使用

需要格式:PFX

转换方法

  • 如果已有PEM,转换为PFX
  • 确保证书和私钥都在PFX中

3. Java应用使用

需要格式:JKS

转换方法

  • 如果已有PEM,先转PFX再转JKS
  • 如果已有PFX,直接转JKS

4. 移动应用使用

需要格式:PEM或DER

转换方法

  • 根据平台要求选择格式
  • iOS通常使用PEM
  • Android通常使用DER或PEM

八、在线转换工具

1. SSL Shopper

访问 https://www.sslshopper.com/ssl-converter.html 进行在线转换。

2. 注意事项

  • 在线工具需要上传私钥,注意安全
  • 建议使用命令行工具进行转换
  • 确保私钥安全

九、最佳实践

1. 安全建议

  • ✅ 转换时使用强密码
  • ✅ 转换后删除临时文件
  • ✅ 妥善保管私钥
  • ✅ 不要在不安全的环境转换

2. 备份

  • ✅ 转换前备份原始文件
  • ✅ 保存转换后的文件
  • ✅ 记录转换参数

3. 验证

  • ✅ 转换后验证证书有效性
  • ✅ 检查证书链完整性
  • ✅ 测试证书是否正常工作

十、常见问题

1. 转换后证书无效

可能原因

  • 证书链不完整
  • 私钥不匹配
  • 格式错误

解决方法

  • 检查证书链
  • 确保证书和私钥匹配
  • 验证证书格式

2. 密码问题

问题:转换时需要密码

解决方法

  • 使用-passin-passout参数
  • 或使用-nodes参数(不加密私钥)

3. 证书链问题

问题:转换后证书链丢失

解决方法

  • 使用-certfile参数包含证书链
  • 或手动合并证书链

总结

SSL证书格式转换是证书管理中的常见需求。通过使用openssl和keytool等工具,可以在各种格式之间进行转换。

关键要点

  • ✅ PEM:最常见的格式,适合大多数场景
  • ✅ PFX:适合Windows系统
  • ✅ JKS:适合Java应用
  • ✅ 使用openssl和keytool进行转换
  • ✅ 注意私钥安全

如果您需要申请SSL证书,推荐使用OHTTPS平台,它提供了PEM格式的证书文件,可以直接用于大多数服务器和应用。

OHTTPS: 免费HTTPS证书/SSL证书申请 • 自动化更新、部署、监控
OHTTPS 支持通过多种域名验证方式(DNS验证、HTTP验证、文件验证等)申请免费的HTTPS证书/SSL证书,包括单域名证书、多域名证书、通配符证书、IP证书等,支持HTTPS证书/SSL证书的自动化更新、自动化部署、自动化监控及告警等,并支持将HTTPS证书/SSL证书自动化部署至阿里云、腾讯云、群晖NAS、百度云、七牛云、多吉云、又拍云、宝塔面板、Docker容器、SSH等,实现HTTPS证书/SSL证书的一站式申请、更新、部署、监控和管理。