糟糕,找不到'server.host.name:0'的RSA或DSA服务器证书?

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

糟糕,找不到'server.host.name:0'的RSA或DSA服务器证书?

这个错误信息的大部分结果是几年没有解决问题,或者是已经修复的错误https://issues.apache.org/bugzilla/show_bug.cgi?id=31709

来自: 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 

问题最终与错误中列出的主机位于不同的configuration文件中。 这是由于两个文件中存在重复的ServerName值。 我纠正了错误的一个,并开始备份(再见半小时):-)。

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

FWIW,我只是以不同的名义再次遇到这个问题。

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

我尝试了一次一个configuration的事情,其他一切都运行良好,直到我把这个文件加回来。

然后我twigged的configuration文件名是低于configuration文件与“主域定义”字母低。 更改了符号链接,以便它放在主def之后,一切都像魅力一样工作。

示例失败列表顺序:

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

工作示例清单:

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

HTH别人:)

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

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

证书:
CN = primaryserver.example.com
SANs = webserver.example.com,puppies.example.com,kittens.example.com

以下configuration将导致此错误:
/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 ...

以下configuration可解决此问题:
/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 ...