無法在 Apache Windows 上配置 SSL 證書
我從 Godaddy 購買了證書,並收到了 .crt 文件和 .p7b 文件(PKCS#7)。
這是我在 https-ssl.conf 文件下的配置
<VirtualHost *:443> ---- SSLEngine on SSLCipherSuite DHE-RSA-AES256-SHA:EDH-RSA-DES-CBC3-SHA:DHE-RSA-AES128-SHA:AES256-SHA:DES-CBC3-SHA:AES128-SHA:RC4-SHA SSLCertificateFile "conf/extra/blablabla.crt" SSLCertificateChainFile "conf/extra/gd-g2_iis_intermediates.p7b"
當我嘗試啟動 Apache 伺服器時,我在錯誤日誌中收到以下錯誤:
- Win32 不支持內置 SSLPassPhraseDialog(密鑰文件 C:/xampp/apache/conf/extra/blablabla.crt),
- AH02564: 無法配置加密 (?) 私鑰
我在 Windows Server 2012 環境下,安裝了 Xampp Apache 2.4。誰能讓我知道導致 SSL 配置問題的原因是什麼?
顯然 blablabla.crt 包含私鑰(這是允許的,但不推薦)並且密鑰是加密的,因此需要密碼(這顯然在 Windows 上不起作用;參見例如https://support.quovadisglobal.com/kb/ a90/i-get-error-message-error-init-sslpassphrasedialog-builtin-is-not-supported-on-win32.aspx )
提取私鑰並解密(除非您已經擁有它,例如從 CSR 生成步驟中)並將解密版本放回文件中,或將其從該文件中刪除並將解密版本放入/保留在單獨的文件中(命名為有意義的東西像 blablabla.key) 並在
SSLCertificateKeyFile
. 在任何一種情況下,為了安全起見,請確保包含解密密鑰的文件上的 ACL 盡可能嚴格。使用最近的 OpenSSL (1.0.0+),您可以使用以下之一解密openssl pkey <oldkey >newkey # no -passout, optional -passin openssl rsa <oldkey >newkey # ditto, only if key is RSA -- # however without greater knowledge you are unlikely to have # successsfully generated a key and obtained a cert for non-RSA # oldkey can be the blablabla.crt that contains _both_ cert and key; # OpenSSL will select the correct-type block from a PEM-format file.
對於 OpenSSL 0.9.x 而不是
pkey
使用openssl pkcs8 -topk8 -nocrypt <oldkey >newkey
但是,Apache(通過 OpenSSL)不支持證書鏈的 p7b 格式,儘管 2.4.8+ 應該支持鏈證書
SSLCertificateFile
而不需要單獨的SSLCertificateChainFile
. 先做openssl pkcs7 -print_certs <chain.p7b >chain.pem
然後要麼使用該新文件,
SSLCertificateChainFile
要麼將其附加到您正在使用的文件中,SSLCertificateFile
即 blablabla.crt 。PS:我假設 XAMPP(我自己不使用它)為您提供 openssl 命令行。如果沒有,在http://www.slproweb.com/products/Win32OpenSSL.html有一個很好的 Windows 版本的 OpenSSL(免費)