Soru Apache SNI namevhosts her zaman ilk VirtualHost girişine yönlendirir


Apache, tüm https isteklerini ilkine yönlendiriyor gibi görünüyor <VirtualHost *:443> ServerName / ServerAlias ​​alanlarında SNI eşleşmesi ne olursa olsun.

Apache, SNI ile oluşturulmuştur
Sunucu sürümü: Apache / 2.2.22 (Ubuntu)
Sunucu kuruldu: Mar 8 2013 15:53:13
OpenSSL 1.0.1 14 Mar 2012

error.log raporları:

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

SNI’nin http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI (Apache'nizin oluşturulmasının SNI'yı destekleyip desteklemediğini nasıl anlayabilirsiniz?)

SSL_TLS_SNI HTTPS kullanılarak istendiğinde uygun şekilde ayarlanmış gibi görünüyor. phpinfo())

Yapılandırma:

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    NameVirtualHost *:443
    Listen 443
</IfModule>

#<VirtualHost *:443>
#       <Location />
#               Order allow,deny
#               Deny from all
#       </Location>
#</VirtualHost>

<VirtualHost *:443>
        SSLEngine on
        ServerAdmin webmaster@localhost
        ServerName server.com
        ServerAlias server.com
        DocumentRoot /web/default
        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLCertificateFile /path/server.com.crt
        SSLCertificateKeyFile /path/server.com.key
</VirtualHost>
<VirtualHost *:443>
        SSLEngine on
        ServerAdmin webmaster@localhost
        ServerName alias.com
        ServerAlias alias.com
        DocumentRoot /web/default
        ErrorLog ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLCertificateFile /path/alias.com.crt
        SSLCertificateKeyFile /path/alias.com.key
</VirtualHost>

Her ikisi de https://server.com ve https://alias.com sunucu.com'dan sertifikayı (ve sertifika uyarısını dikkate almazsanız içeriği) sunmaya çalışın

Benzer yapılandırma HTTP: 80 kullanılarak düzgün çalışır (yalnızca değişiklik SSLEngine açık ve sertifika / anahtar yolları)

İlk sanal ana makineyi (tanımlı sitelere HTTPS erişimini kısıtlama) kaldırırsam, her zaman bir SSL hatası alırım (tanımlı bir site olsa bile)

Teşekkürler

DÜZENLE:
Ek bayraklar

SSLProtocol all
SSLCipherSuite HIGH:MEDIUM
SSLStrictSNIVHostCheck on
SSLVerifyClient none
SSLProxyEngine off

SSLStrictSNIVHostCheck on Bu yüzden sadece SNI etkin tarayıcıları desteklemeli

apache2ctl -S çıktı:

*:443                  is a NameVirtualHost
         default server server.com (/etc/apache2/sites-enabled/000-default:22)
         port 443 namevhost server.com (/etc/apache2/sites-enabled/000-default:22)
         port 443 namevhost alias.com (/etc/apache2/sites-enabled/000-default:39)
         port 443 namevhost other.com (/etc/apache2/sites-enabled/other:22)

5
2018-05-23 07:13


Menşei


olası kopyası Aynı IP adresi ve aynı bağlantı noktasında birden çok SSL alanı var mı? - Jenny D
Ben öyle düşünmüyorum. Görünüşe göre, SNI en azından bu ortamda mümkün ve doğru bir şekilde yapılandırıldığını söyleyebilirim. - Falcon Momot


Cevaplar:


Güncelleştirme 

Bu yüzden garip bir sebepten dolayı, sorun kendini çözmüş görünüyor.
Belki de bir çeşit garip önbelleğe alma sorunu veya bir şey ( apache2ctl stop/start/restart ve sudo service apache2 stop/start/restart/reloadbirçok kez edindim ve birkaç farklı makineyi kullanarak sunucu üzerinde yerel olarak testler yaptık).

Bu soruyu cevaplamaktan çekinmeyin ya da herhangi bir referans olarak görev yapıyorsa bırakın.
Tüm yardımcılar için teşekkürler!


4
2018-05-23 08:12



aynı sorun var gibi görünüyor. Hala çözülmedi. Zaten 12 saat bekliyorum. server.com ve server.com çalışır ancak sorunları alias.com (olmasına rağmen alias.com zaten çalışıyor) ??? @arcqwerty problemin kendi başına çözülene kadar ne kadar sürdü? - NilsB
Q + A arasındaki zamanda geriye baktığımda yaklaşık 10 saat söyleyebilirim? - arcyqwerty
Sunucumu bu kötü durumda bıraktım, 5 gün sonra geri döndüm ve her şey yolunda gidiyor. Ancak apache sunucusu yeniden başlatıldı (kök işlem hala orijinal olanı, ancak httpd forks sıfırlandı). - Mat M
Belki bu, tarayıcı önbelleği veya açık bağlantıları yeniden kullanarak bir şey var. - rudimeier
Yeniden başlatmanın değişmiş SSL ayarlarını etkilemediği görülüyor - apache'yi durdurup apache'yi tekrar başlatmanız gerekiyor. - Kay Hidde


Yapılandırmanız iyi görünüyor; Direktif SSLEngine On dahil edilmiştir; Günlük mesajına göre, sorun müşteri tarafında geliyor gibi görünüyor.

Çoğu müşteri SNI'yı desteklemese de, çoğu bunu yapıyor. SSL negatifliğinin sistem tarafından nasıl yapıldığına (sonra Win XP'de çalışmaz) veya tarayıcıya göre (sürüm yeterince yeni olmalıdır) bağlıdır. Bakmak SNI desteği ile tarayıcıların listesi. Tüm müşterilerin web sitenize erişmesini sağlamalısınız, bu eski sürümlerden (tarayıcıdan veya sistemden) dolayı SNI'yi kullanamazsınız. SunucuAdı başına bir IP'ye ihtiyaç duyarsınız ve VirtualHost $ IP_alias: 443 SunucuAdı alias.com ve VirtualHost $ IP_server: 443, SunucuAdı için 443, VirtualHost *: 443 yerine her ikisi için de kullanabilirsiniz.


1
2018-05-23 07:59



Tarayıcıda SSL_TLS_SNI değişkeninde görebildiğimden beri tarayıcımın doğru şekilde SNI gönderdiğinden eminim. Chrome, Firefox ve IE10'un en yeni sürümlerini denedim ve hiç çalışmadım. Tarayıcı SNI desteğimi kontrol ettiğimde işler iyi görünüyor sni.velox.ch - arcyqwerty


İlk sanal ana makineyle ilgili bir hata oluştu, çünkü SSLEngine on Direktif, Apache SSL olmadan bir HTTP yanıtı gönderir. Bu tür bir işlevsellik istiyorsanız, varsayılan vhost'unuz için başka bir site (muhtemelen mevcut bir alanı yeniden kullanmadığınız sürece başka bir sertifika ile) kurmanız gerekecek, tek yapmanız gereken iyi bir hata döndürmek olsa bile.

Belki de sertifikaların gerçekten farklı olup olmadığını kontrol edin? Yapılandırmanız doğru görünüyor.

Ayrıca, başka olmadığını da kontrol edin VirtualHost443 numaralı bağlantı noktasında dinleme yapan bölümler. Apache, en uygun eşleştirmeyi seçecektir, bu da bağlantıya girilen adrese özgü herhangi bir şey varsa, bu girdinin öncelikli olacağı anlamına gelir. Bunun senin problemin olduğunu düşünmüyorum.

Ayrıca, bir ilgi noktası olarak, kullanıcı tarafında gördüğünüz şey, çoğu durumda müşterinin SNI'yı desteklememesi durumunda ne olacağıdır.


0



Evet, ilk ana bilgisayarda bu hatayı bekliyorum. Bunun üzerinde durduğum tek davranış sadece varsayılan siteyi devre dışı bırakmaktır (erişilebilen tek HTTPS siteleri sanal sunucular tarafından açıkça tanımlanmıştır). Her halükarda, yorumunda bile, işler işe yaramıyor gibi görünüyor. Sertifikaların farklı olduğunu doğruladım ( openssl x509 -in cert.crt -text -noout) kullanarak olsa openssl s_client -showcerts -connect alias.com:443 bana server.com sertifikasını veriyor gibi görünüyor. Bende var SSLStrictSNIVHostCheck on Bu yüzden SNI'yi destekleyen tarayıcıları kısıtlamalıdır. Site yapılandırması için düzenlemeye bakın - arcyqwerty
Ayrıca, eğer ben server.com virtualhost'unu açıklarsam, o zaman ilk vhost olduğundan ve varsayılan olarak ayarlandığından, alias.com için doğru sertifikayı geçer. - arcyqwerty