SSLProtocol'u yapılandırma dosyasındaki ilk VirtualHost için ayarlayabilirsiniz. Sonraki tüm VirtualHost girdileri, bu ayarı ilk girişten devralır ve OpenSSL hatası nedeniyle kendi ayarlarını sessizce yok sayar .
Mod_ssl için karşılık gelen bir hata raporu var , ancak hata raporunda açıklandığı gibi, sorunun OpenSSL'de çözülmesi gerekiyor (sertifika devralındı, ancak protokoller değil).
Şifre takımları her VirtualHost için bağımsız olarak ayarlanmalıdır, aksi takdirde bir çok güvensiz şifre de dahil olmak üzere varsayılan liste ile karşılaşırsınız. Ayrıca, Sunucu Adı Göstergesini (SNI) desteklemeyen eski istemcilerin her zaman varsayılan ana bilgisayarı ( engellenmedikçeSSLStrictSNIVHostCheck
) kullanacağını unutmayın ; bu da testinizi bozabilir.
Kısacası, her sanal ana bilgisayar için özel şifre paketleri ve sertifikaları belirtebilirsiniz, ancak hata giderilene kadar her sanal ana bilgisayar için özel protokollerle doğru davranış beklemeyin.
Apache 2.4 ve modssl ile OpenSSL 1.0.1k ile bu sorunla karşılaştım ve Apache 2.2'nin aynı sorunlara maruz kalmasını bekliyorum.
Güncelleme (Ekim 2016): OpenSSL hatası 13 Ekim 2016'da çözüldü olarak işaretlendi. Ancak, açık sorunların toplu olarak kapatılmasının bir parçasıydı ve 'kısmi bir düzeltme' sağlansa da, sorun hiçbir zaman tam olarak çözülmedi.
Güncelleme (Nisan 2018): Yeniden gönderilen OpenSSL hatasının artık bir yaması var (9 Nisan 2018 itibariyle). Bu düzeltme eki, birden çok SNI sanal ana bilgisayarı ile yapılandırılmış Apache örneklerinin davranışını değiştirir:
Vhost SSLProtocol ile uyumlu olmayan bağlantıları reddet
Bu, 2.4.27 ile ve bu versiyon ile üretimde geliştirilmiş ve test edilmiştir. Yama 2.4.33 için değiştirildi ve hafifçe test edildi.
Bu, bağlantının sürümünü, SNI'ye dayalı olarak eşleşen sanal ana bilgisayar için yapılandırılan SSLProtocol ile karşılaştırır. Bağlantı, başlangıçta bağlantı noktası için varsayılan ana bilgisayar için yapılandırılmış SSLProtocol ile yapıldığından, varsayılan ana bilgisayarın herhangi bir sanal ana bilgisayar tarafından desteklenecek tüm protokolleri içermesi gerekir.
Bu yama, OpenSSL ile kayıtlı ssl_callback_ServerNameIndication geri aramasının ölümcül uyarı SSL_AD_PROTOCOL_VERSION döndürmesini sağlamak için init_vhost işlevine ek bir APR_EMISMATCH dönüş durumu ekler. Bu, ClientHello'ya, söz konusu sürümü içermeyen bir SSLProtocol belirtmesiyle aynı yanıtı üretmeyi amaçlamaktadır. SNI geri çağrısı ClientHello'nun işlenmesi sırasında ve bir yanıt üretilmeden önce çağrıldığı için, tam olarak bunu yapıyor gibi görünüyor.
Birdenbire aşağıdaki biçimde mesajlar görürseniz:
Rejecting version [version] for servername [hostname]
Ardından SSLProtocol
, varsayılan ana makinenizi kontrol etmelisiniz .
SSLStrictSNIVHostCheck
çok takdir edilmektedir. Bununla birlikte, başka bir sanal ana bilgisayarda açık olarak ayarlanırsa , SNI habersiz istemcilerin bu belirli sanal ana bilgisayara erişmesine izin verilmediği belirtilen belgelere de dikkat edilmelidir .