Dlaczego apache httpd mówi mi, że moje wirtualne hosty oparte na nazwie działają tylko z przeglądarkami obsługującymi SNI (RFC 4366)

9

Dlaczego apache wyświetla mi ten komunikat o błędzie w moich logach? Czy to fałszywy pozytyw?

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

Niedawno zaktualizowałem Centos 5.7 do 6.3, a tym samym do nowszej wersji httpd. Zawsze tworzyłem konfiguracje wirtualnego hosta ssl jak poniżej. Gdzie wszystkie domeny, które dzielą ten sam certyfikat (głównie / zawsze symbole wieloznaczne) korzystają z tego samego adresu IP. Ale nigdy wcześniej nie otrzymałem tego komunikatu o błędzie (a może ja, może nie szukałem wystarczająco dużo w moich logach?) Z tego, czego się dowiedziałem, powinno działać bez SNI (wskazanie nazwy serwera)

Oto odpowiednie części mojego pliku httpd.conf. Bez tego VirtualHost nie otrzymuję komunikatu o błędzie.

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
źródło

Odpowiedzi:

7

To dlatego, że twoja dyrektywa VirtualHost nie pasuje do twojej dyrektywy ServerName i / lub CN certyfikatu. Wszystkie trzy muszą być identyczne, chyba że masz certyfikat wieloznaczny, w którym części inne niż dzikie muszą być identyczne.

bahamat
źródło
Więc odpowiedź brzmi: zmień <VirtualHost 10.101.0.135:443>linię na <VirtualHost sub2.domain.com:443>? Potencjalnie?
MichaelJones,
@MichaelJones czy to rozwiązało problem?
Fernando Santiago,
@FernandoSantiago Teraz płacę za różne adresy IP dla moich wirtualnych hostów, ponieważ uznałem, że SNI nie jest wystarczająco wiarygodny. I mam ten adres IP w swoich VirtualHostdeklaracjach.
MichaelJones,
1
To doskonale rozwiązało mój problem. Użyłem VirtualHostdzikiej karty, ale ServerNamedyrektywa jest zgodna z certyfikatem CN. Wszystkie 3 dopasowane i altówka! PS: Ta odpowiedź serverfault.com/questions/578061/... mówi, jak uzyskać CN, który umieściłeś w certyfikacie RSA
3bdalla,
3

To nie jest błąd, to komunikat ostrzegawczy.

Dostajesz go, ponieważ 1) zaktualizowałeś wersję Apache i 2) masz 2 hosty wirtualne SSL korzystające z tego samego dokładnego adresu IP (w przeciwieństwie do używania 2 adresów IP).

Ponieważ dzielisz adres IP, przeglądarki bez obsługi SNI otrzymają tylko pierwszą stronę internetową, a nigdy drugą.

właściwa rzecz
źródło
Przeglądarki bez SNI skonfigurują certyfikat dla pierwszej strony internetowej - ale aby faktycznie odwzorować je na vhost do obsługi żądania, Hostnagłówek jest sprawdzany normalnie.
Shane Madden,
@ShaneMadden, nie uważam, że jest to poprawne, ponieważ nagłówek Host: NIE jest sprawdzany PRZED nawiązaniem połączenia SSL. I właśnie o to chodzi w obsłudze SNI. Lub w przeciwnym razie potrzebuję 1 adresu IP na SSL VH. Więc bez SNI, Apache ustawi domyślnie na pierwszą VH znalezioną z tym adresem IP, nagłówek Host: jest praktycznie ignorowany.
rightstuff
... W przeciwnym razie możesz wykonać 100s SSL NameBasedVirtualHosts na 1 pojedynczym adresie IP i wiemy, że to nieprawda (bez obsługi SNI przez serwer i klienta).
rightstuff
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)Możesz. Zwykle używa się tego, gdy wszystkie mają zwykle ten sam certyfikat, symbol wieloznaczny lub alternatywny certyfikat nazwy. Ale powiedzmy, że masz dwa vhosty z własnymi certyfikatami SSL - domena1.com i domena2.com, z domeną domain1.com skonfigurowaną najpierw. Przeglądarka nieobsługująca SNI żąda domain2.com - pojawia się błąd niedopasowania certyfikatu do domeny, ponieważ wysłano mu certyfikat domain1 - ale jeśli go klikną, otrzymają treść domain2.
Shane Madden,
1
Gdyby nagłówek hosta został zignorowany, nawet prosty i szeroko stosowany przypadek „certyfikatu wieloznacznego z wieloma vhostami opartymi na nazwach” zostałby zepsuty. Tak czy inaczej, oto kilka przykładów pytań, na które odpowiedziałem tutaj, gdzie to zachowanie zostało pokazane; serverfault.com/q/292637 serverfault.com/q/330212
Shane Madden,