На общем сервере у нас есть некоторые сайты, которые работают только на порте 80. Однако есть другие сайты, которые работают как на порте 80, так и на 443.
Например:
<VirtualHost *:80>
ServerName unsecure.com
</VirtualHost>
<VirtualHost *:80>
ServerName secure.com
RedirectPermanent / https://secure.com
</VirtualHost>
<VirtualHost *:443>
ServerName secure.com
</VirtualHost>
Запросы к https://unsecure.com будет представлен сертификат для secure.com. Есть ли способ избежать этого, кроме разделения интерфейсов (например, foo: 80 и bar: 443, что невозможно в этой ситуации). Многие из этих сайтов на порту 80 являются устаревшими, и настроить их на использование SSL не так просто, как мы надеялись.
Вам не нужны отдельные сетевые интерфейсы, а только отдельные IP-адреса. Сайты, работающие по протоколу https, получают один IP-адрес, в то время как сайты, работающие по протоколу http, получают только другой IP-адрес. Когда сайт переходит на https, записи его DNS адреса также попадают на другой IP адрес.
В Apache вы измените директивы Listen на соответствие этим IP адресам. Например:
Listen 198.51.100.37 80
Listen 203.0.113.252 80
Listen 203.0.113.252 443
Это единственный способ сделать это надежно.
.