介紹如何在 Linux 中使用 OpenSSL 指令轉換 PEM、DER 與 PKCS #12 格式的憑證檔案。
常見的 SSL 憑證的檔案格式大概有以下幾種:
| 種類 | 格式 | 副檔名 |
|---|---|---|
| Base64 文字 | PEM | .pem、.crt、.cer、.key |
| PKCS #7 | .p7b、.p7c |
|
| 二進位 | DER | .cer、.der |
| PKCS #12 | .pfx、.p12 |
在這些憑證格式中,PEM 算是比較常見的,若遇到需要換格式的時候,可以使用以下的 OpenSSL 的指令來處理。
以下指令可將 DER 格式的憑證檔案 certificate.der 轉換成 PEM 格式的 certificate.pem:
# DER 格式轉 PEM 格式 openssl x509 -inform der -in certificate.der -out certificate.pem
以下指令可將 PEM 格式的憑證檔案 certificate.pem 轉換成 DER 格式的 certificate.der:
# PEM 格式轉 DER 格式 openssl x509 -outform der -in certificate.pem -out certificate.der
以下指令可將 PEM 憑證 certificate.crt 與私鑰 private.key 連同 CA 的憑證 CACert.crt 一起轉為 PKCS #12 格式的 keystore.pfx:
# PEM 憑證與私鑰轉 PKCS #12 openssl pkcs12 -export -out keystore.pfx -inkey private.key \ -in certificate.crt -certfile CACert.crt
以下指令可從 PKCS #12 格式的 keystore.pfx 中轉出 PEM 格式的私鑰與憑證:
# PKCS #12 轉出 PEM 格式的私鑰與憑證 openssl pkcs12 -in keystore.pfx -out keystore.pem -nodes
也可以將 PKCS #12 中的私鑰與憑證個別轉出:
# PKCS #12 轉出 PEM 格式的私鑰 openssl pkcs12 -in keystore.pfx -out private.pem -nodes -nocerts # PKCS #12 轉出 PEM 格式的憑證 openssl pkcs12 -in keystore.pfx -out certificate.pem -nodes -nokeys