哎呀,没有找到“server.host.name:0”的 RSA 或 DSA 服务器证书?

哎呀,没有找到“server.host.name:0”的 RSA 或 DSA 服务器证书?

我正在设置一个新的 Web 服务器,该服务器在 Ubuntu 12.4 上使用 Apache 2.2.22 托管十几个虚拟主机,每个站点一个配置文件。我一次性创建了所有配置文件,并运行a2ensite *以一次性启用它们。当我重新加载配置时,它失败了,重新启动 Apache 后,我在 error.log 中发现了以下错误消息:

哎呀,未找到“server.host.name:0”的 RSA 或 DSA 服务器证书?!

此错误消息的大多数结果都是多年前的,没有解决问题,或者是已修复的错误https://issues.apache.org/bugzilla/show_bug.cgi?id=31709

答案1

从: http://www.clearchain.com/blog/posts/solving-the-apache-ssl-error-oops-no-rsa-or-dsa-server-certificate-found-for-www-somedomain-com0

摘要:如果您忘记了部分中的以下行,也可能会发生此错误VirtualHost

SSLEngine on

答案2

问题最终出在不同的配置文件比错误中列出的主机更糟糕。这是因为两个文件中的 ServerName 值重复。我修复了错误的文件,然后重新启动(再见那半个小时) :-)。

为了解决这个问题,我禁用了所有网站,然后一次启用几个网站,直到再次遇到问题。

答案3

如果您使用的证书具有多个主题备用名称,但ServerName指令与证书的 CN 或 SAN 值不匹配,您也可能会收到此错误。通常情况下,开发人员想要同一生产站点的开发版本,但开发站点没有真正的证书。

示例网站:
webserver.example.com
webserver-dev.example.com

证书:
CN = primaryserver.example.com
SAN = webserver.example.com、puppies.example.com、kittens.example.com

以下配置会导致此错误:
/etc/apache2/sites-enabled/webserver.example.com-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName webserver.example.com ...
/etc/apache2/sites-enabled/webserver-dev.example.com-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName webserver-dev.example.com ...

以下配置可解决此问题:
/etc/apache2/sites-enabled/webserver.example.com-ssl.conf
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName webserver.example.com ...
/etc/apache2/sites-enabled/webserver.example.com-ssl.conf
<IfModule mod_ssl.c> <VirtualHost webserver-dev.example.com:443> ServerName webserver.example.com ...

答案4

值得一提的是,我刚刚又遇到了这个问题,只不过形式不同。

如果您使用通配符 SSL 证书,请确保域 (domain.com) 的 VirtualHost 条目列在其他任何内容 (foo.domain.com、bar.domain.com 等) 之前。

我尝试了一次一个的配置,其他一切都运行正常,直到我重新添加这个文件。

然后我意识到配置文件名字母顺序低于带有“主域定义”的配置文件。更改符号链接,使其位于主定义之后,一切运行正常。

失败列表顺序示例:

foo.domain.conf
prim.domain.conf
something.domain.conf

工作示例清单:

prim.domain.conf
something.domain.conf
zfoo.domain.conf

HTH 其他人 :)

相关内容