Назад | Перейти на главную страницу

Ошибка сертификата SSL при настройке перенаправления на виртуальном хосте

Мой сервер отлично работает с самоподписанным сертификатом 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-соединение:

ИмяBasedSSLVHosts

Вдобавок к этому на вашем VirtualHost отсутствуют директивы, связанные с SSL, например SSLEngine on и другие SSL* директивы. Я думаю, что это, вероятно, причина, по которой вы получаете эту ошибку, потому что вы настроили VirtualHost без SSL для прослушивания порта 443, в то время как другой VirtualHost на порту 443 имеет включенный SSL. По описанной выше причине это не работает.