首页/网络/协议速查/证书与密钥文件格式

证书与密钥文件格式

PEM 是 Base64 文本(.crt/.pem/.key 常见),DER 是二进制,PKCS#12(.pfx/.p12) 与 JKS 是带密码的容器,Java/Windows 各有偏好。

协议速查网络更新于 2026-10-13

证书文件格式是什么

证书与私钥在不同系统上用不同格式存放:PEM 是 Base64 文本,扩展名常见 .crt/.pem/.key;DER 是二进制;PKCS#12(.pfx/.p12)是把证书、私钥和中间链打包在一起、带密码保护的容器;JKS 是 Java 专用的密钥库格式。看清楚格式再转换,是本环节最常见的踩坑点——很多「证书不生效」其实只是把一个格式当成另一个用了。

基本信息

PEMBase64 文本,以 -----BEGIN 开头,最通用
DER二进制编码,部分设备与应用导入时要求
PKCS#12证书 + 私钥 + 链,密码保护,扩展名 .pfx/.p12
JKSJava KeyStore,Tomcat 等 Java 应用使用
识别方法file 命令、openssl x509 -text、head 看开头标记
转换工具openssl、keytool

典型使用场景

  • 把 CA 下载的证书与中间链合成 fullchain,供 Nginx 使用
  • 给 Windows/IIS 部署时把 PEM 打包成带密码的 pfx
  • Java 应用上线前把 pfx 转换成 JKS 交给 Tomcat
  • 排查「证书加载失败」:先用 openssl 读出内容确认格式与完整性
  • 迁移证书时核对链是否齐全,避免只带叶证书导致部分客户端不信任

格式互转常用命令

格式互转常用命令
# PEM 转 DER(Nginx 之外的部分设备需要二进制)
openssl x509 -in cert.pem -outform der -out cert.der
# 合并叶证书与中间链,生成完整链文件
cat cert.pem chain.pem > fullchain.pem
# 打包成带密码的 PKCS#12 容器
openssl pkcs12 -export -in fullchain.pem -inkey key.pem -out site.pfx
# 从 PKCS#12 还原成 PEM(-nodes 表示私钥不加密)
openssl pkcs12 -in site.pfx -nodes -out all.pem
# 转成 Java 使用的 JKS
keytool -importkeystore -srckeystore site.pfx -srcstoretype pkcs12 \
  -destkeystore site.jks -deststoretype jks
# 核对证书内容与主体
openssl x509 -in cert.pem -noout -subject -issuer -dates

格式对照

格式类型典型用途
PEMBase64 文本,可见 BEGIN/END 标记Nginx、Apache 及多数 Linux 服务
DER二进制,不可直接阅读部分网络设备与 Windows 导入
PKCS#12证书 + 私钥 + 链,密码保护Windows/IIS、Java 迁移交换
JKSJava KeyStore 专有格式Tomcat 与 Java 应用
PKCS#7仅含证书链,不含私钥Windows 证书链导入
识别格式最快的办法是看文件开头:有 -----BEGIN CERTIFICATE----- 就是 PEM;用 file 命令显示 data 且 openssl x509 -inform der 能读出内容就是 DER。不要只看扩展名,同一后缀在不同 CA 手里含义可能不同。
PKCS#12 文件里含明文可导出的私钥,只靠一个口令保护:传输时应通过加密通道或受控介质,不要在聊天工具里直接发文件,导出后可考虑另行加密压缩。

易错点

  • 只看扩展名判断格式:.crt/.cer 既可能是 PEM 也可能是 DER,直接喂给服务会报解析错误
  • 只部署叶证书不带中间链:桌面浏览器可能凭缓存补齐而正常,但手机与命令行客户端会报证书不受信任
  • 用 openssl pkcs12 导出时忘记 -export 或漏掉私钥,得到的文件装不进 IIS
  • 私钥文件权限设置过宽(如 644):同机其他用户可读取,等于证书私钥泄露

数据来源与参考

  • RFC 7468(PEM 文本编码)
  • PKCS#12 (RFC 7292)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌