证书格式转换速查
证书格式转换集中在三类高频操作:PEM 与 DER 互转、PFX 与 PEM 互转,以及链与私钥的组合拆解。需要牢记的是转换只改变编码与封装方式,不改变证书内容与私钥本身,因此转换前后做一次指纹比对就能确认没有拿错文件。转换失败基本都源于格式判断错误或参数方向写反。
基本信息
| PEM 转 DER | openssl x509 -in a.pem -outform DER -out a.der |
|---|---|
| DER 转 PEM | openssl x509 -inform DER -in a.der -out a.pem |
| PEM 转 PFX | openssl pkcs12 -export -out a.p12 -inkey key.pem -in a.pem -certfile chain.pem |
| PFX 转 PEM | openssl pkcs12 -in a.p12 -nodes -out a-all.pem,内容混排需要分段拆分 |
| 校验手段 | SHA-256 指纹比对 |
| 私钥转换 | 使用 openssl pkey,转换后仍属敏感文件 |
典型使用场景
- 对接不同平台:把 CA 下发的格式转成目标系统要求的格式
- 迁移到 Java 环境:把 PEM 证书与私钥打包成 PKCS#12
- 从 Windows 导出:把 .pfx 拆成 PEM 供 Linux 服务引用
- 转换后核对:用指纹确认内容未发生变化
- 排查导入失败:先确认格式与参数方向,再重试
转换后核对指纹一致
转换后核对指纹一致
# 转换前记录指纹
openssl x509 -in a.pem -noout -fingerprint -sha256
# 转换后再次计算,两者必须完全一致
openssl x509 -inform DER -in a.der -noout -fingerprint -sha256
# 私钥转 PEM 并核对
openssl pkey -in a.key -out a-pem.key
# PFX 拆出的文件包含多段内容,需按 BEGIN 标记分段保存常见转换与易错点
| 转换方向 | 命令要点 | 易错点 |
|---|---|---|
| PEM 到 DER | -outform DER | 忘记指定输出格式 |
| DER 到 PEM | -inform DER | 输入格式判断错误 |
| PEM 到 PFX | pkcs12 -export 带 -inkey | 漏掉中间链 |
| PFX 到 PEM | -nodes 导出私钥 | 输出混排未拆分 |
转换前后用 SHA-256 指纹比对,可以确认没有拿错文件或发生内容变化。
pkcs12 拆出的文件同时含私钥与多张证书,直接当证书文件使用会导致解析失败或链顺序错误,必须按 BEGIN 标记拆分。
参数方向最容易写反:-inform 描述输入、-outform 描述输出,混用后会得到报错,或一个看似正常但内容错误的文件,所以转换后一定要复核。
转换只是搬运:私钥本身不会因为换了容器而变得更安全,拆出来的 PEM、打包后的 PFX 都要按密钥标准设置权限与备份策略。
批量转换前先备份原始文件:一次写坏再回头找 CA 重新下发,往往比备份多花十几分钟代价高得多。