После недавнего обновления Apache2 до версии 2.2.31 я обнаружил странное поведение в настройке SSL VirtualHost.
Некоторые веб-сайты, которые я размещаю, показывали сертификат для хоста по умолчанию, даже если клиент был Server Name Identification
осведомлены, и это произошло лишь с некоторыми из них. Это отображается как обычное паспортное предупреждение Firefox / Chrome о том, что вас могут обмануть, если вы просматриваете свой домашний банк, но это просто не так.
Чтобы было ясно, если сервер host.hostingdomain.org
имеет собственный SSL, пытаясь получить доступ https://www.hostedsite.org
сертификат отчетов для host.hostingdomain.org
, но несколько https://www.hostedsite.me
сообщил правильный сертификат.
Все сайты размещены на одном IP-адресе, на порте 443. На самом деле VirtualHosting работает на стороне HTTP и автоматически перенаправляет клиентов с поддержкой SNI на SSL, что обеспечивает обратную совместимость с клиентами, не знающими SNI.
При проверке журналов ошибок для виртуальных хостов-нарушителей показан следующий текст
[Tue Dec 25 16:02:45 2012] [error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/path/to/www.site.org.conf:20)
и на самом деле виртуальный хост был правильно настроен с помощью SSLCertificateFile.
Возникает очевидный вопрос: как это исправить?
Бывает, что это может быть ошибка в самой последней версии Apache.
listen.conf
Заменить Listen *:443
(или Listen 443
в соответствии с вашей настройкой) с Listen *:443 http
У меня была такая же проблема, и то, что сработало для меня, было невероятно простым
отредактируйте /etc/apache2/ports.conf (для ubuntu или httpd.conf)
измените "Listen 443" на "Listen 443 http" в ssl_module
Еще одно решение для этого - убедиться, что все ваши: 443 vhosts включают конфигурацию TLS.
Эта проблема была недавно введено в Debian wheezy и я получил решение от http://blog.noizeramp.com/2010/10/03/apache-2-and-ssl-configuration/.