我正在设置一个新的 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
摘要:如果您忘记了部分中的以下行,也可能会发生此错误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 其他人 :)