Apache2 etc/apache2/ports.conf, 443 порт и https

При использовании SSL сертификатов для на серверах, на которых применяется Apache2 для всех сайтов иногда начинает отдаваться один и тот же сертификат. Это встречается когда на одном сервере существует ряд сайтов, работающих по http, затем для одного из ресурсов подключается сертификат и настраивается переадресация на https.



 

Оптимальный  Apache2 etc/apache2/ports.conf

Чтобы избежать этого явления нужно привести конфигурационный файл ports.conf к следующему виду:

 

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>

 

Самое важное здесь:

NameVirtualHost *:443
Listen 443

 

Именно благодаря данным директивам запросы правильно распределяются между виртуальными хостами и сертфикат отдается корректно только для того сайта, для которого он приобретен (или выпущен бесплатно). Для всех остальных сайтов при обращении по https будет отдаваться стандартная заглушка из текста которой следует, что веб-сервер функционирует нормально.

 

В зависимости от конфигурации Apache может потребоваться создание или корректировка виртуального хоста, используемого по умолчанию, а также его активация. Если виртуальный хост не активирован он активируется командой, приведенной ниже:

a2ensite default-ssl

 

Найти файл виртуального хоста можно по адресу /etc/apache2/sites-availible/default-ssl, иногда он называется default-ssl.conf. Файл присутствует по умолчанию и размещается в каталоге при установке пакета с Apache2

 

Конифгурация проверяется

apache2ctl configtest

 

Затем веб-серверу дается команда на перечитывание конифгов

service apache2 reload

 

Или apache2 просто перезапускается

/etc/init.d/apache2 restart

 

Перезапуск apache2 или перечитывание конфигов необходимо как при активации дефолтного виртуального хоста, так и просто при редактировании файла ports.conf