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

ServerAlias ​​без www не работает на виртуальном хосте SSL

Я перемещаю сайт с одного сервера на другой и использую его текущий и все еще действующий сертификат SSL. Машина, на которой я работаю, - это сервер Ubuntu 14.04. Я установил свой обычный файл виртуального хоста, назовем его my_domain.conf. Вот его содержание:

#omitting the major/minor signs near VirtualHost
VirtualHost *:443
        ServerAdmin webmaster@mydomain.com
        ServerName mydomain.com
        ServerAlias www.mydomain.com
        SSLEngine on
        SSLCertificateFile    /etc/ssl/certs/mydomain.com.crt
        SSLCertificateKeyFile /etc/ssl/private/mydomain.com.key
        DocumentRoot /var/www/html/mydomain.com/public
        ErrorLog /var/log/apache2/mydomain-error.log
        TransferLog /var/log/apache2/mydomain-access.log
/VirtualHost

Теперь, когда я набираю www.mydomain.com в браузере, VirtualHost работает. Но когда я набираю mydomain.com, этого не происходит. Это нужно и заказчику, и веб-дизайнеру, поэтому я не могу этого избежать.
Я попытался

Ничего не изменилось, и я действительно не могу понять, почему это происходит

РЕДАКТИРОВАТЬ: я забыл добавить, «это не работает», я имею в виду, что конфигурационный файл виртуального хоста пропущен, и браузер переводит меня в корень документа apache2 по умолчанию

Тоже самое. Я отказался от попыток сделать ServerAlias ​​на хосте SSL. Мое решение:

VirtualHost *:443
    ServerAdmin webmaster@mydomain.com
    ServerName mydomain.com
    ...
/VirtualHost
VirtualHost *:443
    ServerAdmin webmaster@mydomain.com
    ServerName www.mydomain.com
    ...//same as above
/VirtualHost

Я знаю, что это некрасиво, но работает - без головной боли.

Попробуйте использовать только ServerAlias ​​Like:

ServerAdmin webmaster@example.com
ServerAlias example.com
ServerAlias www.example.com
DocumentRoot /var/www/html/

В настоящее время я использую это, и мои сайты работают отлично.

У меня была очень похожая проблема, и я понял ее, используя уровень журнала отладки. Я не отключал определение виртуального хоста по умолчанию (ssl.conf). Там не было DocumentRoot, ServerName или Alias, но по какой-то причине эта конфигурация конфликтовала с моим виртуальным хостом. Чтобы решить эту проблему, просто прокомментируйте весь раздел виртуального хоста по умолчанию:

#<VirtualHost _defaulr_:443>
#...
#</VirtualHost>

Скопируйте данные сертификата на vhost или за его пределами (для глобального использования) и перезапустите apache. Мне это помогло.

Сообщение «Виртуальные хосты SSL на основе имени работают только для клиентов с поддержкой указания имени сервера TLS» относится к отсутствию поддержки SNI в веб-клиенте (т. Е. В вашем браузере). Другими словами, это сообщение обычно не указывает на проблему с настройкой вашего сервера, а скорее является предупреждением о том, что некоторые браузеры не смогут получить доступ к серверу. Для наглядности это только «информационное» сообщение и не указывает на то, что что-то не так.

Примечательно, что многие старые браузеры не поддерживают SNI, и в результате не могут согласовывать альтернативные имена субъектов (SAN) в многодоменном сертификате. Чтобы получить список браузеров или просто дополнительную информацию, вы можете выполнить поиск в Интернете по запросу «Поддержка SNI», но на самом деле у вас должна быть довольно веская причина отказаться от использования многодоменного сертификата, чтобы просто совместим со старым браузером.

Вам, вероятно, нужно поднять свой LogLevel чтобы получить более подробную информацию, прежде чем кто-либо сможет помочь вам найти проблему.