Мой сервер отлично работает с самоподписанным сертификатом SSL, пока я не добавлю следующие строки для перенаправления запроса, содержащего wwww
к non-www
сайт:
<VirtualHost *:443>
ServerName www.mydomain.com
Redirect permanent / https://mydomain.com/
</VirtualHost>
Я получил следующую ошибку:
Сервер должен поддерживать SSL, но не имеет настроенного сертификата [Подсказка: SSLCertificateFile] ((null): 0)
Я думал, что для простого перенаправления SSL не потребуется. Что нужно сделать, чтобы это простое перенаправление работало?
Проблема в том, что у вас не может быть нескольких NameVirtualHost, если вы используете SSL, это обычная проблема для многих разных веб-серверов.
Причина в сетевых уровнях. HTTP находится поверх SSL, это означает, что сначала должно быть установлено SSL-соединение, а затем отправляется HTTP-запрос. Но HTTP-запрос решает, какой NameVirtualHost должен обслуживать этот запрос, в то же время сертификаты SSL могут быть специфичными для NameVirtualHosts, поэтому как может быть установлено SSL-соединение, если NameVirtualHost для обработки этого запроса еще не известен во время SSL рукопожатие?
Все больше людей говорят об этой проблеме и предлагают обходные пути. Подобно размещению разных виртуальных хостов на разных IP-адресах или портах, это решит проблему, поскольку IP-адреса и порты известны до того, как необходимо установить SSL-соединение:
Вдобавок к этому на вашем VirtualHost отсутствуют директивы, связанные с SSL, например SSLEngine on
и другие SSL*
директивы. Я думаю, что это, вероятно, причина, по которой вы получаете эту ошибку, потому что вы настроили VirtualHost без SSL для прослушивания порта 443, в то время как другой VirtualHost на порту 443 имеет включенный SSL. По описанной выше причине это не работает.