Apache SSL错误:找不到私钥


8

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

您如何解决这个问题?
斯里尼瓦斯

Answers:


6

警告: 永远不要在互联网上发布您的私钥。甚至不要将其复制到另一台计算机,工作站等上。它必须尽可能保密。

SSLCertificateKeyFile需要私钥。该密钥通常在CSR之前或同时生成。搜索以以下行开头的文件:BEGIN PRIVATE KEY

仅当您要求签署证书时才需要CSR(证书签署请求)。之后,您可以将其丢弃。

如果丢失了私钥,则需要生成一个新的私钥,然后生成一个新的CSR,并要求CA(证书颁发机构)再次对CSR进行签名。


1

这是问题所在:

SSLCertificateKeyFile   /etc/apache2/ssl/domain.csr

您错误地将证书签名请求(CSR)文件放在这里。您应该在其中放置用于生成CSR的私钥文件。该私钥文件不应受到密码保护,否则,您每次(重新)启动Apache时都需要输入密码。

为了使下一代受益,以下是有关如何使用OpenSSL生成CSR的简短摘要(可从Ubuntu文档中获得一个很好的教程):

1)生成服务器密钥:

openssl genrsa -des3 -out server.key 2048

这要求您指定密码。

2)制作无密码私钥,在出现提示时输入您在上方使用的密码:

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

最后编辑Apache2配置(可能是default-ssl.conf):

    SSLEngine on
    SSLCertificateFile      /etc/ssl/certs/mydomain.org.crt
    SSLCertificateKeyFile   /etc/ssl/private/mydomain.org.key

希望这可以帮助。


1

我知道有人已经回答了这个问题,但是我想让其他人知道发生此错误时发生了什么事。

由于我的原因,我错误地将SSLCertificateFile而不是SSLCertificateChainFile作为我的证书捆绑包。此错误不断出现,并让我陷入困境。我一直认为我的私钥是错误的。


0

我知道这篇文章很旧,但是我认为我应该添加更多内容,因为这是google搜索中有关该错误的第一个链接-“初始化:未找到私钥”

我以前见过这种情况,事实证明这是一个错误的私钥。我使用strace来跟踪上一次尝试加载的私钥apache。将其从ssl目录和httpd.conf中删除后,Apache重新启动就没有问题了。

错误的SSL密钥:-rw-r ----- 1个根754974732 1.7K 1987年5月31日/var/cpanel/ssl/installed/keys/c129e_4ed23_b7c0d7f821952179fc8006506ab06b72.key

用于查找错误密钥的命令:strace -f -v -s 1024 -o strace.log服务httpd start

环境:操作系统: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.

我希望这有帮助!


欢迎使用服务器故障。您的帖子可以使用改进的格式。是错误的SSL密钥:...段落或许报价?此外,您的TL;不DR 需要格式化为code。感谢您的贡献。
我说恢复莫妮卡的时间

0

我在这上面转动了一下,但要确保您有完整的私钥文件。原来我有几行不见了。

检查私钥的命令是:

openssl rsa -in /etc/httpd/certs/server.key -check

将/etc/httpd/certs/server.key替换为服务器私钥的完整路径,如果一切正常,您将看到:

RSA key ok

希望它对某人有帮助,顺便说一句,我的服务器是带有Apache / 2.4.6的CentOS 7.6

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.