无法在 Apache Windows 上配置 SSL 证书

无法在 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 配置问题吗?

答案1

显然 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或将其附加到您正在使用的文件中,即SSLCertificateFileblablabla.crt 。

PS:我假设 XAMPP(我自己不使用)为您提供了 openssl 命令行。如果没有,这里有一个不错的 Windows 版本的 OpenSSL(免费)http://www.slproweb.com/products/Win32OpenSSL.html

相关内容