在 Linux 下使用 OpenSSL 转换证书/密钥格式是非常常见的操作。下面按常见场景给你一份速查表(从 → 到)。
| 格式 | 说明 |
|---|---|
| PEM | Base64 文本,常见 .pem、.crt、.key |
| DER | 二进制格式,常见 .der、.cer |
| PKCS12 | 包含证书 + 私钥,常见 .p12、.pfx |
| PKCS8 | 私钥格式(常用于 Java) |
openssl x509 -in cert.pem -outform der -out cert.der
openssl x509 -in cert.der -inform der -out cert.pem
openssl rsa -in key.pem -outform der -out key.der
openssl rsa -in key.der -inform der -out key.pem
openssl pkcs12 -export \
-in cert.pem \
-inkey key.pem \
-out cert.p12 \
-name alias_name
会提示输入导出密码
openssl pkcs12 -in cert.p12 -out cert.pem -nodes
只导出证书:
openssl pkcs12 -in cert.p12 -nokeys -out cert.pem
只导出私钥:
openssl pkcs12 -in cert.p12 -nocerts -nodes -out key.pem
openssl pkcs8 -topk8 -nocrypt -in rsa_key.pem -out pkcs8_key.pem
openssl rsa -in pkcs8_key.pem -out rsa_key.pem
openssl x509 -in cert.pem -text -noout
openssl rsa -in key.pem -text -noout
✅ PEM 文件通常以:
-----BEGIN CERTIFICATE-----
或
-----BEGIN PRIVATE KEY-----
❌ 如果提示:
unable to load certificate
通常是 格式不匹配(PEM/ DER 搞错)
| 转换 | 命令 |
|---|---|
| PEM → DER | openssl x509 -in a.pem -outform der -out a.der |
| DER → PEM | openssl x509 -in a.der -inform der -out a.pem |
| PEM → P12 | openssl pkcs12 -export -in cert.pem -inkey key.pem -out a.p12 |
| P12 → PEM | openssl pkcs12 -in a.p12 -out a.pem -nodes |
如果你能告诉我:
.pem / .p12 / .der)我可以给你一条精确命令 ✅