
我的伺服器使用自簽名 SSL 憑證工作正常,直到我添加以下行以將包含以下內容的請求重定向wwww
到non-www
網站:
<VirtualHost *:443>
ServerName www.mydomain.com
Redirect permanent / https://mydomain.com/
</VirtualHost>
我得到的錯誤是:
伺服器應該支援 SSL,但沒有設定憑證 [提示:SSLCertificateFile] ((null):0)
我認為簡單的重定向不需要 SSL。應該怎麼做才能讓這個簡單的重定向運作?
答案1
問題是,如果使用 SSL,則不能擁有多個 NameVirtualHost,這是許多不同網頁伺服器的常見問題。
原因在於網路層。 HTTP 位於 SSL 之上,這意味著必須先建立 SSL 連接,然後傳送 HTTP 請求。但是HTTP請求決定了哪個NameVirtualHost必須為此請求提供服務,同時SSL憑證可以特定於NameVirtualHosts,因此如果在SSL時尚不知道處理該請求的NameVirtualHost,那麼如何建立SSL連線握手?
有更多的人在討論這個問題並提出解決方法。就像將不同的虛擬主機放在不同的 IP 或連接埠上一樣,這可以解決問題,因為在建立 SSL 連線之前 IP 和連接埠是已知的:
最重要的是,您的 VirtualHost 缺少 SSL 相關指令SSLEngine on
以及其他SSL*
指令。我認為這可能是您收到此錯誤的原因,因為您配置了一個沒有 SSL 的 VirtualHost 來偵聽連接埠 443,而連接埠 443 上的另一個 VirtualHost 啟用了 SSL。由於上述原因,無法工作。