![“服务器应该支持 SSL,但未配置证书 [提示:SSLCertificateFile]”错误](https://linux22.com/image/603108/%E2%80%9C%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%BA%94%E8%AF%A5%E6%94%AF%E6%8C%81%20SSL%EF%BC%8C%E4%BD%86%E6%9C%AA%E9%85%8D%E7%BD%AE%E8%AF%81%E4%B9%A6%20%5B%E6%8F%90%E7%A4%BA%EF%BC%9ASSLCertificateFile%5D%E2%80%9D%E9%94%99%E8%AF%AF.png)
最近将 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)
并且实际上 vhost 已使用 SSLCertificateFile 正确配置。
问题很明显:如何解决这个问题?
答案1
碰巧这可能是 Apache 最新版本的一个错误。
解决方案 1:降级到最新稳定版本
解决方案 2:编辑listen.conf
替换Listen *:443
(或Listen 443
根据您的设置)Listen *:443 http
答案2
我也遇到了同样的问题,但对我有用的方法非常简单
编辑 /etc/apache2/ports.conf (对于 ubuntu,或 httpd.conf )
将 ssl_module 下的“Listen 443”更改为“Listen 443 http”
答案3
另一个解决方案是确保所有 :443 vhosts 都包含 TLS 配置。
这个问题最近在 Debian wheezy 中引入我从中得到了解决方案http://blog.noizeramp.com/2010/10/03/apache-2-and-ssl-configuration/。