Windows

無法在 Apache Windows 上配置 SSL 證書

  • August 5, 2017

我從 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(免費)

引用自:https://serverfault.com/questions/866987