Openssl
Openssl 使用中間證書將 pem 轉換為 crt
使用 Firefox,很容易將頁面使用的 SSL 證書導出為 x509,並將所有中間證書導出為 *.crt。
我需要通過使用 openssl 將 *.pem 文件轉換為 *.crt 作為非二進制格式來做同樣的事情。
這些是apache目前使用的證書:
SSLCertificateFile /etc/apache2/ssl/cert-start.pem SSLCertificateKeyFile /etc/apache2/ssl/key-no-pw.pem SSLCACertificateFile /etc/apache2/ssl/cert-bundle.pem
我可以使用以下方法輕鬆地將其轉換
SSLCertificateFile
為 crt:openssl x509 -in cert-start.pem -out cert-start.crt
為了建構帶有完整鏈的crt,我嘗試過
-chain
,-clcerts
但沒有運氣。包含所有中間證書的正確方法是什麼
SSLCACertificateFile /etc/apache2/ssl/cert-bundle.pem
?
cat cert-start.pem cert-bundle.pem > chain.pem
如果它還包含密鑰(在某些情況下它是必需的,但取決於使用情況)
cat cert-start.pem cert-bundle.pem key-no-pw.pem > full_chain.pem
如果您檢查輸出,您會看到類似這樣的內容(如果是 chain.pem):
-----BEGIN CERTIFICATE----- ... <base64 encoded server cert> ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... <base64 encoded intermediate cert> ... -----END CERTIFICATE-----
如果是 full_chain.pem,它將是這樣的:
-----BEGIN CERTIFICATE----- ... <base64 encoded server cert> ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ... <base64 encoded intermediate cert> ... -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- ... <base64 encoded key> -----END PRIVATE KEY-----
如果您使用它“檢查”它,
openssl x509 -in chain.pem
您只會看到第一個(在這種情況下是伺服器)證書。其餘所有將作為註釋處理 - 被忽略。您必須將其分隔為額外的文件,或者僅通過管道將特定的行範圍列印到 openssl 以查看內容。可以使用 cat 或您喜歡的某些文本編輯器“直覺地”完成真正的檢查…一旦應用程序期望 pem / crt 文件,這就是您所需要的。如果您想將其作為“容器”處理,則正確的形式是 pkcs12。在那裡,您可以將其作為一組證書處理並以這種方式處理並查看/導入它。該命令將在這種情況下
openssl pkcs12 -export -in cert-start.pem -inkey key-no-pw.pem -certfile cert-bundle.pem -out full_chain.p12 -nodes
可以使用命令檢查 pkcs12 輸出
openssl pkcs12 -in full_chain.p12 -nodes
請注意,“正確”格式(p12 或 pem / crt)取決於使用情況。