Что ж, эту проблему относительно сложно описать. Я установил Webmin + Virtualmin на сервере. У меня есть несколько IP-адресов на сервере (два сетевых адаптера связаны).
Предположим, что сеть 1.1.1.1/29.
Виртуальные серверы теперь выглядят так:
masterdomain.com:
seconddomain.com:
Видите ли, нет никаких проблем с использованием HTTPS на masterdomain.com (кроме жалоб на то, что сертификат не подписан ЦС). TLSv1 сообщает серверу Hello, обменивается ключом, и все готово.
Проблема связана с https://1.1.1.4/ или https://seconddomain.com/. Firefox говорит ssl_error_rx_record_too_long.
Я использовал Wireshark для проверки пакетов и обнаружил, что (seconddomain.com или 1.1.1.4) никогда не отправляет ключ или 'Hello', но index.php DocumentRoot второго домена.com в ответе TLSv1. Wireshark классифицирует его как Alert (Level: Fatal, Description: Unexpected Message)
. Первые 66 байтов соответствуют ожидаемому заголовку, а затем Apache вставляет обработанный index.php -> "<html><head><title>Main page of seconddomain.com!![...]"
вместо ключа SSL. Это в пакете, в который предполагается поместить «Server Hello» (после правильного «Client Hello» от клиента).
Я не знаю, как решить проблему, которая, скорее всего, связана с конфигурацией VirtualHost. Но VirtualHost на seconddomain.com имеет ту же конфигурацию, что и masterdomain.com! - кроме прослушивания только одного IP вместо * (и, конечно, ключ SSL, поля SuexecGroup и DocumentRoot разные).
Заранее спасибо.
Я нашел ошибку. Видите ли, Virtualmin сгенерировал это в apache2.conf
:
NameVirtualHost 1.1.1.2:80
NameVirtualHost 1.1.1.2:443
NameVirtualHost 1.1.1.4
Поэтому не различать порты https и http в 1.1.1.4. Заменил на:
NameVirtualHost 1.1.1.2:80
NameVirtualHost 1.1.1.2:443
NameVirtualHost 1.1.1.4:80
NameVirtualHost 1.1.1.4:443
Решить проблему.