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

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

Мой сервер работал нормально с самоподписанным 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-адресах или портах, это решило бы проблему, поскольку IP-адреса и порты известны до того, как должно быть установлено SSL-соединение:

ИмяSSLVHosts

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

Связанный контент