我在Ubuntu 14.04上运行apache并试图实现SSL。 任何帮助将不胜感激。
default-ssl.conf有:
SSLCertificateFile /etc/apache2/ssl/domain.crt SSLCertificateKeyFile /etc/apache2/ssl/domain.csr
当我重新启动apache时,/var/log/apache2/error.log中的错误消息是:
[Sun Feb 01 19:31:06.443226 2015] [ssl:error] [pid 30927] AH02203: Init: Private key not found [Sun Feb 01 19:31:06.443408 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag [Sun Feb 01 19:31:06.443424 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 er$ [Sun Feb 01 19:31:06.443435 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag [Sun Feb 01 19:31:06.443447 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$ [Sun Feb 01 19:31:06.443458 2015] [ssl:error] [pid 30927] SSL Library Error: error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib [Sun Feb 01 19:31:06.443468 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag [Sun Feb 01 19:31:06.443479 2015] [ssl:error] [pid 30927] SSL Library Error: error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error (Ty$ [Sun Feb 01 19:31:06.443487 2015] [ssl:emerg] [pid 30927] AH02311: Fatal error initialising mod_ssl, exiting. See /var/log/apache2/error.log for more inf$
警告:永远不要在互联网上发布您的私钥。 甚至不要将其复制到另一台计算机,工作站等。它们大部分都尽可能保密。
SSLCertificateKeyFile需要一个私钥。 此密钥通常在CSR之前或同时生成。 search以包含以下内容的行开头的文件:BEGIN PRIVATE KEY
只有在您要求签署证书时才需要CSR(证书签名请求)。 之后,你可以放弃它。
如果丢失私钥,则需要生成新的私钥,然后生成新的CSR,并要求CA(证书颁发机构)再次签署CSR。
这是问题:
SSLCertificateKeyFile /etc/apache2/ssl/domain.csr
您错误地将您的证书签名请求(CSR)文件放在这里。 您应该在那里放置您用来生成CSR的私钥文件。 该私钥文件不应受密码保护,否则每次(重新)启动Apache时都需要input密码。
为了后代的好处,下面简要总结一下如何使用OpenSSL生成CSR-s( Ubuntu文档中提供了一个很好的教程):
1)生成服务器密钥:
openssl genrsa -des3 -out server.key 2048
这要求你指定一个密码。
2)制作一个无密码的私钥,在提示时input上面使用的密码:
openssl rsa -in server.key -out server.key.insecure mv server.key server.key.SECURE mv server.key.insecure server.key
3)使用无密码私钥生成CSR:
openssl req -new -key server.key -out mydomain.org.csr
“mydomain.org”可能是你的域名。 你必须交互地回答几个问题。 完成后,将mydomain.org.csr文件发送到您的证书颁发机构。 您将找回*.crt文件或*.pem文件。 假设他们给了你mydomain.org.crt 。 安装它作为您的证书和密码密钥文件作为您的密钥(这些位置适用于Ubuntu 14.04,它们可能在其他系统上的其他位置,请检查Apache2文档):
sudo cp mydomain.org.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private/mydomain.org.key
最后编辑Apache2configuration(可以是default-ssl.conf ):
SSLEngine on SSLCertificateFile /etc/ssl/certs/mydomain.org.crt SSLCertificateKeyFile /etc/ssl/private/mydomain.org.key
希望这可以帮助。
我知道这个post是旧的,但我想我应该增加更多的,因为这是谷歌search有关错误的第一个链接 – “初始:私钥找不到”
我以前见过这种情况,事实certificate这是一个糟糕的私钥。 我用strace来追踪apache试图加载的最后一个私钥。 一旦我从ssl目录和httpd.conf中删除它,Apache重新启动没有问题。
错误的SSL密钥:-rw-r —– 1 root 754974732 1.7K May 31 1987 /var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key
用于追踪不良密钥的命令:strace -f -v -s 1024 -o strace.log service httpd start
环境:OS:CentSO 6.9控制面板:cPanel 11.64 Apache版本2.2
tl;dr: Find the bad private key that Apache is trying to load and backup it up and remove it from Apache's configuration file.
我希望这有帮助!