“服务器应该是 SSL-aware 但没有配置证书 [提示:SSLCertificateFile]”错误

usr*_*ΛΩΝ 21 ssl virtualhost sni apache-2.2

最近将 Apache2 升级到 2.2.31 版后,我发现 SSL VirtualHost 设置中有一个奇怪的行为。

即使客户端Server Name Identification知道,我托管的一些网站也会显示默认主机的证书,而这仅发生在其中一些网站上。这显示为常见的 Firefox/Chrome 的护照警告,如果您正在浏览您的家庭银行,您可能会被骗,但事实并非如此。

需要明确的是,如果服务器host.hostingdomain.org有自己的 SSL,则尝试访问 的https://www.hostedsite.org报告证书host.hostingdomain.org,但少数https://www.hostedsite.me报告了正确的证书。

所有站点都托管在相同的 IP 地址上,在端口 443 上。事实上,VirtualHosting 在 HTTP 端工作并自动将支持 SNI 的客户端重定向到 SSL,因此它向后兼容不支持 SNI 的客户端。

检查违规 VirtualHosts 的错误日志显示以下文本

[Tue Dec 25 16:02:45 2012] [error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/path/to/www.site.org.conf:20)
Run Code Online (Sandbox Code Playgroud)

事实上,虚拟主机已正确配置了 SSLCertificateFile。

问题很明显:如何解决这个问题?

usr*_*ΛΩΝ 38

碰巧它可能是最新版本的 Apache 中的一个错误。

解决方案 1:降级到最新的稳定版

解决方案2:编辑 listen.conf

替换Listen *:443(或Listen 443根据您的设置)为Listen *:443 http

信用

  • 解决方案 2:应该是 httpd.conf 而不是 listen.conf (2认同)

小智 10

我遇到了同样的问题,对我有用的方法非常简单

编辑 /etc/apache2/ports.conf (对于 ubuntu 或 httpd.conf )

将 ssl_module 下的“Listen 443”更改为“Listen 443 http”

  • 接受的答案似乎已经过时。这个答案更有用,更准确。+1 (2认同)