Apache SSL错误:未find私钥

我在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.

我希望这有帮助!