在虚拟主机中configurationredirect时没有SSL证书错误

我的服务器使用自签名SSL证书正常工作,直到我添加了以下几行来将包含wwww请求redirectnon-www站点:

 <VirtualHost *:443> ServerName www.mydomain.com Redirect permanent / https://mydomain.com/ </VirtualHost> 

我得到的错误是:

服务器应该是SSL感知的,但没有configuration证书[提示:SSLCertificateFile]((null):0)

我认为一个简单的redirect不需要SSL。 应该做些什么才能使这个简单的redirect工作?

问题是如果您使用SSL,则不能拥有多个NameVirtualHost,这是许多不同的Web服务器的常见问题。

原因是在networking层。 HTTP位于SSL之上,这意味着首先必须build立SSL连接,然后发送HTTP请求。 但是,HTTP请求决定了哪个NameVirtualHost必须为这个请求提供服务,同时SSL证书可以是特定于NameVirtualHosts的,那么如果在SSL的时候尚未知道处理这个请求的NameVirtualHost,那么如何build立SSL连接握手?

有更多的人在讨论这个问题并提出解决方法。 就像将不同的虚拟主机放在不同的IP或端口上一样,这将解决这个问题,因为在build立SSL连接之前IP和端口是已知的:

NameBasedSSLVHosts

最重要的是,你的VirtualHost缺lessSSL相关的指令,比如SSLEngine on和其他的SSL*指令。 我认为这可能是你得到这个错误的原因,因为你configuration了一个没有SSL的VirtualHost来侦听端口443,而另外一个端口443上的VirtualHost启用了SSL。 对于上述不能工作的原因。