介紹如何在 Linux 中使用 OpenSSL 指令轉換 PEM、DER 與 PKCS #12 格式的憑證檔案。
SSL 憑證格式
常見的 SSL 憑證的檔案格式大概有以下幾種:
種類 | 格式 | 副檔名 |
---|---|---|
Base64 文字 | PEM | .pem 、.crt 、.cer 、.key |
PKCS #7 | .p7b 、.p7c |
|
二進位 | DER | .cer 、.der |
PKCS #12 | .pfx 、.p12 |
在這些憑證格式中,PEM 算是比較常見的,若遇到需要換格式的時候,可以使用以下的 OpenSSL 的指令來處理。
PEM 與 DER 格式轉換
以下指令可將 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 與 PKCS #12 格式轉換
以下指令可將 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