我在 checkdomain 购买了证书。他们给了我两个文件.crt和一个.ca-bundle和。钥匙。我将它们移至“/etc/ssl/g/”。我使用“a2enmod ssl”启用 SSL,然后使用“sudo service apache2 restart”重新启动 apache,到现在为止没有错误。
然后我编辑了default-ssl.conf:
<VirtualHost *:443>
ServerName mrgrimod.de
DocumentRoot "/var/www/html"
SSLEngine on
SSLCertificateFile /etc/ssl/g/g.crt
SSlCertificateKeyFile /etc/ssl/g/g.key
</VirtualHost>
然后我尝试使用“sudo service apache2 restart”重新启动 apache,但重新启动失败并出现以下错误:Job for apache2.service failed. See 'systemctl status apache2.service' and 'journalctl -xn' for details.
Apache 错误日志包含以下行:
Fri Mar 30 17:03:50.143429 2018] [ssl:error] [pid 10598:tid 3074262784] AH02579: Init: Private key not found
[Fri Mar 30 17:03:50.143530 2018] [ssl:error] [pid 10598:tid 3074262784] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Fri Mar 30 17:03:50.143557 2018] [ssl:error] [pid 10598:tid 3074262784] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error
[Fri Mar 30 17:03:50.143578 2018] [ssl:error] [pid 10598:tid 3074262784] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Fri Mar 30 17:03:50.143599 2018] [ssl:error] [pid 10598:tid 3074262784] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=RSA)
[Fri Mar 30 17:03:50.143620 2018] [ssl:error] [pid 10598:tid 3074262784] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib
[Fri Mar 30 17:03:50.143640 2018] [ssl:error] [pid 10598:tid 3074262784] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag
[Fri Mar 30 17:03:50.143660 2018] [ssl:error] [pid 10598:tid 3074262784] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Type=PKCS8_PRIV_KEY_INFO)
[Fri Mar 30 17:03:50.143674 2018] [ssl:emerg] [pid 10598:tid 3074262784] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more information
[Fri Mar 30 17:03:50.143704 2018] [ssl:emerg] [pid 10598:tid 3074262784] AH02564: Failed to configure encrypted (?) private key server1.server1.de:443:0, check /etc/ssl/ssl.key/server.key
答案1
您可以使用该命令apachectl -t
在重新启动服务之前检查是否存在语法错误。如果没有发现错误,apache
该命令应该会输出。Syntax OK
.conf
在我们确定错误是什么之前,您应该提供有关文件的更多详细信息。
无论如何,这是一个启用 SSL 支持的配置示例:
<VirtualHost *:443>
ServerName example.com
DocumentRoot "/var/www/html"
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/mycert.pem
SSlCertificateKeyFile /etc/httpd/ssl/mycert.pem
SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite HIGH:!aNULL:!MD5
</VirtualHost>
要启用 SSL,配置文件必须至少包含以下选项:
SSLEngine On:开启对 SSL 的支持。
SSLCertificateFile:您提供的签名证书的位置。
SSlCertificateKeyFile:在您的系统上生成的密钥文件。
此外,许多浏览器都需要一个方法来证明对你网站的请求是合理的,即使用配置选项包含链文件(称为 bundle)。SSLCertificateChainFile
我建议参考以下:Apache how-to:https://httpd.apache.org/docs/2.4/en/ssl/ssl_howto.html
答案2
要验证您的证书,您可以使用以下命令并检查证书和密钥文件的模数的结果,它必须相同。
openssl x509 -noout -modulus -in /etc/ssl/g/g.crt
openssl rsa -noout -modulus -in /etc/ssl/g/g.key
另外,您可以检查目录 /etc/ssl/g/ 上的文件权限,仅供测试,您可以 chmod -R 777 /etc/ssl/g 内容并重新启动 apache 服务
答案3
只是想提醒任何遇到此错误的人,或者其他使用 https 的 apache 用户必须在我的 apache conf 上添加 Listen 443
答案4
Checkdomain 给了我一个无效的私钥。问题解决了。