«Сервер должен поддерживать SSL, но не настроен сертификат [Подсказка: SSLCertificateFile]» ошибка

21

После недавнего обновления 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.

Изучение журналов ошибок для оскорбительных VirtualHosts показало следующий текст

[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)

и фактически vhost был правильно настроен с SSLCertificateFile.

Вопрос очевиден: как это исправить?

USR-местный ΕΨΗΕΛΩΝ
источник

Ответы:

38

Бывает, что это может быть ошибкой в ​​самой последней версии Apache.

Решение 1: понижение до последней стабильной

Решение 2: редактировать listen.conf

Заменить Listen *:443(или в Listen 443соответствии с вашими настройками) наListen *:443 http

кредит

USR-местный ΕΨΗΕΛΩΝ
источник
1
Спасибо за указание на это! Вы спасли меня от многих удивлений вокруг ... Интересно, почему Apache делает жизнь сложнее !?
tftd
2
Решение 2: должно ли это быть httpd.conf, а не listen.conf
zzapper
1
Обратите внимание, что это случилось со мной сегодня утром ... в итоге мне нужно было добавить это "http" в строку прослушивания в /etc/httpd/conf.d/ssl.conf - о, мне не пришлось понижать версию ...
Скотт
Решения являются альтернативными, вам не нужно понижать версию, если вы добавляете listen.conf
usr-local-ΕΨΗΕΛΩΝ
10

У меня была точно такая же проблема, и то, что сработало для меня, было невероятно простым

отредактируйте /etc/apache2/ports.conf (для Ubuntu или httpd.conf)

измените «Listen 443» на «Listen 443 http» под ssl_module

Юстиции О.
источник
Это уже в принятом ответе.
Свен
2
Принятый ответ кажется устаревшим. Этот ответ был более полезным и точным. +1
Параг
Этот ответ применим для apache на моем стеке ламп apache2.4, Ubuntu. Другой ответ - «listen.conf» - должен быть ports.conf
Ник
2

Другим решением для этого является обеспечение того, чтобы все ваши: 443 vhosts включали конфигурацию TLS.

Эта проблема была недавно представлена ​​в Debian wheezy, и я получил решение с http://blog.noizeramp.com/2010/10/03/apache-2-and-ssl-configuration/ .

Франсуа Мариер
источник
Это была моя проблема. Я дублировал vhost в моем, httpd.confно не смог включить строки, указывающие конфигурацию TLS. Добавление различных настроек TLS обратно (SSLEngine, SSLCipherSuite, SSLCertificateFile и SSLCertificateKeyFile) устранило проблему.
Риного