我从Godaddy购买了一个证书,并且收到了一个.crt文件以及.p7b文件(PKCS#7)。
这是我在https-ssl.conf文件下的configuration
<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(密钥文件C:/xampp/apache/conf/extra/blablabla.crt)不支持SSLPassPhraseDialog内build,
AH02564:无法configurationencryption(?)私钥
我在Windows Server 2012环境下安装了Xampp Apache 2.4。 任何人都可以让我知道是什么导致SSLconfiguration的问题?
显然blablabla.crt包含的私钥(这是允许的,虽然不推荐),密钥是encryption的,因此需要密码(这显然不能在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格式,尽pipe2.4.8+应该支持SSLCertificateFile中的链证书, 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(免费)