Почему apache httpd сообщает мне, что мои виртуальные хосты на основе имен работают только с браузерами с поддержкой SNI (RFC 4366)

9

Почему apache выдает мне это сообщение об ошибке в моих журналах? Это ложный положительный результат?

[warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)

Я недавно обновился с Centos 5.7 до 6.3, и тем самым до более новой версии httpd. Я всегда делал свои конфигурации ssl virtualhost, как показано ниже. Где все домены с одинаковым сертификатом (в основном / всегда с подстановочными сертификатами) имеют один и тот же ip. Но никогда не получал это сообщение об ошибке раньше (или я, может быть, я не посмотрел достаточно в моих журналах?) Из того, что я узнал, это должно работать без SNI (индикация имени сервера)

Вот соответствующие части моего файла httpd.conf. Без этого VirtualHost я не получаю сообщение об ошибке.

NameVirtualHost 10.101.0.135:443

<VirtualHost 10.101.0.135:443>
  ServerName sub1.domain.com

  SSLEngine on
  SSLProtocol -all +SSLv3 +TLSv1
  SSLCipherSuite ALL:!aNull:!EDH:!DH:!ADH:!eNull:!LOW:!EXP:RC4+RSA+SHA1:+HIGH:+MEDIUM
  SSLCertificateFile /opt/RootLive/etc/ssl/ssl.crt/wild.fareoffice.com.crt
  SSLCertificateKeyFile /opt/RootLive/etc/ssl/ssl.key/wild.fareoffice.com.key
  SSLCertificateChainFile /opt/RootLive/etc/ssl/ca/geotrust-ca.pem
</VirtualHost>

<VirtualHost 10.101.0.135:443>
  ServerName sub2.domain.com

  SSLEngine on
  SSLProtocol -all +SSLv3 +TLSv1
  SSLCipherSuite ALL:!aNull:!EDH:!DH:!ADH:!eNull:!LOW:!EXP:RC4+RSA+SHA1:+HIGH:+MEDIUM
  SSLCertificateFile /opt/RootLive/etc/ssl/ssl.crt/wild.fareoffice.com.crt
  SSLCertificateKeyFile /opt/RootLive/etc/ssl/ssl.key/wild.fareoffice.com.key
  SSLCertificateChainFile /opt/RootLive/etc/ssl/ca/geotrust-ca.pem
</VirtualHost>
Arlukin
источник

Ответы:

7

Это потому, что ваша директива VirtualHost не соответствует вашей директиве ServerName и / или CN сертификата. Все три должны быть идентичны, если только у вас нет сертификата подстановочного знака, где не подстановочные части должны быть идентичны.

bahamat
источник
Таким образом, ответ здесь, чтобы изменить <VirtualHost 10.101.0.135:443>строку, чтобы быть <VirtualHost sub2.domain.com:443>? Потенциально?
MichaelJones
@MichaelJones это решило проблему?
Фернандо Сантьяго
@FernandoSantiago Теперь я плачу за разные IP-адреса для своих виртуальных хостов, так как я обнаружил, что SNI недостаточно надежен. И у меня есть эти IP-адреса в моих VirtualHostдекларациях.
MichaelJones
1
Это прекрасно решило мою проблему. Я использовал VirtualHostподстановочный знак, но ServerNameдиректива совпадает с сертификатом CN. Все 3 совпали и альт! PS: В этом ответе serverfault.com/questions/578061/… рассказывается, как получить CN, который вы
указали
3

Это не ошибка, это предупреждающее сообщение.

И вы получаете это, потому что 1) вы обновили свою версию Apache и 2) у вас есть 2 виртуальных хоста SSL, использующих один и тот же точный IP-адрес (в отличие от использования 2 IP-адресов).

Поскольку вы делитесь IP-адресами, браузеры без поддержки SNI получат только первый веб-сайт, а не второй.

rightstuff
источник
Браузеры без SNI получат сертификат, настроенный для первого веб-сайта, но для фактического сопоставления их с vhost для обслуживания запроса Hostзаголовок проверяется нормально.
Шейн Мэдден
@ShaneMadden, я не верю, что это правильно, поскольку заголовок Host: НЕ проверяется ДО установления соединения SSL. И в этом весь смысл поддержки SNI. Или в противном случае требуется 1 IP на SSL VH. Таким образом, без SNI Apache будет использовать по умолчанию первый VH, найденный с этим IP-адресом, заголовок Host: практически игнорируется.
правозащитник
... В противном случае вы могли бы сделать сотни SSL NameBasedVirtualHosts на одном IP-адресе, и мы знаем, что это не так (без поддержки SNI сервером и клиентом).
правозащитник
4
Otherwise you could do 100s of SSL NameBasedVirtualHosts on 1 single IP address, and we know that's not true (without SNI support by server and client)Вы можете. Обычно это используется, когда все имеют один и тот же сертификат, подстановочный знак или сертификат альтернативного имени. Но скажем, у вас есть два vhosts с их собственными сертификатами SSL - domain1.com и domain2.com, с настройкой domain1.com в первую очередь. Браузер, не поддерживающий SNI, запрашивает domain2.com - они получают ошибку несоответствия домена сертификата, потому что им отправили сертификат domain1 - но если они щелкают по нему, они получают содержимое domain2.
Шейн Мэдден
1
Если бы заголовок хоста был проигнорирован, даже простой и широко распространенный случай «подстановочного сертификата с несколькими vhosts на основе имен» сломался бы. Так или иначе, вот пара примеров вопросов, на которые я ответил здесь, где это поведение было показано; serverfault.com/q/292637 serverfault.com/q/330212
Шейн Мэдден