我的服务器使用自签名 SSL 证书工作正常,直到我添加了以下几行以重定向包含wwww
到non-www
站点的请求:
<VirtualHost *:443>
ServerName www.mydomain.com
Redirect permanent / https://mydomain.com/
</VirtualHost>
我得到的错误是:
服务器应支持 SSL,但未配置证书 [提示:SSLCertificateFile] ((null):0)
我以为简单的重定向不需要 SSL。要使这个简单的重定向正常工作,应该怎么做?
答案1
问题是,如果您使用 SSL,则不能拥有多个 NameVirtualHost,这是许多不同 Web 服务器的常见问题。
原因在于网络层。HTTP 位于 SSL 之上,这意味着必须先建立 SSL 连接,然后发送 HTTP 请求。但 HTTP 请求决定哪个 NameVirtualHost 必须为该请求提供服务,同时 SSL 证书可以特定于 NameVirtualHost,因此如果在 SSL 握手时尚不知道处理该请求的 NameVirtualHost,那么如何建立 SSL 连接?
有更多人谈论这个问题并提出解决方法。例如将不同的虚拟主机放在不同的 IP 或端口上,这将解决问题,因为在建立 SSL 连接之前 IP 和端口是已知的:
除此之外,您的 VirtualHost 缺少 SSL 相关指令,例如SSLEngine on
和其他SSL*
指令。我认为这可能是您收到此错误的原因,因为您配置了一个没有 SSL 的 VirtualHost 来监听端口 443,而端口 443 上的另一个 VirtualHost 启用了 SSL。由于上述原因,这无法工作。