1.證書格式
PEM 格式
PEM格式通常用於數字證書認證機構(Certificate Authorities,CA),擴展名為.pem, .crt, .cer, and .key。內容為Base64編碼的ASCII碼文件,有類似"-----BEGIN CERTIFICATE-----" 和 "-----END CERTIFICATE-----"的頭尾標記。服務器認證證書,中級認證證書和私鑰都可以儲存為PEM格式(認證證書其實就是公鑰)。Apache和類似的服務器使用PEM格式證書。
DER 格式
DER格式與PEM不同之處在於其使用二進制而不是Base64編碼的ASCII。擴展名為.der,但也經常使用.cer用作擴展名,所有類型的認證證書和私鑰都可以存儲為DER格式。Java使其典型使用平台。
PKCS#7/P7B 格式
PKCS#7 或 P7B格式通常以Base64的格式存儲,擴展名為.p7b 或 .p7c,有類似BEGIN PKCS7-----" 和 "-----END PKCS7-----"的頭尾標記。PKCS#7 或 P7B只能存儲認證證書或證書路徑中的證書(就是存儲認證證書鏈,本級,上級,到根級都存到一個文件中)。不能存儲私鑰,Windows和Tomcat都支持這種格式。
PKCS#12/PFX 格式
PKCS#12 或 PFX格式是以加密的二進制形式存儲服務器認證證書,中級認證證書和私鑰。擴展名為.pfx 和 .p12,PXF通常用於Windows中導入導出認證證書和私鑰。
2.轉換方式
可以使用OpenSSL命令行工具在不同證書格式之間的轉換
PEM to DER
openssl x509 -outform der -in certificate.pem -out certificate.der
PEM to P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
PEM to PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
DER to PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
P7B to PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
PFX to PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
PXF轉PEM后certificate.cer
文件包含認證證書和私鑰,需要把它們分開存儲才能使用。