Aracılığıyla paylaş


TLS sürümü zorlama özellikleri artık Windows Server 2019'da her sertifika bağlamasında kullanılabilir.

Bu gönderinin yazarı:

Andrew Marshall, Baş Güvenlik Programı Yöneticisi, Müşteri Güvenliği ve Güveni

Gabriel Montenegro, Baş Program Yöneticisi, Çekirdek Ağ

Niranjan Inamdar, Kıdemli Yazılım Mühendisi, Çekirdek Ağ

Michael Brown, Kıdemli Yazılım Mühendisi, Internet Information Services

Ivan Pashov, Baş Yazılım Mühendisliği Lideri, Çekirdek Ağ

Ağustos 2019

Dünya çapındaki mühendisler TLS 1.0bağımlılıklarını ortadan kaldırmak için çalışırken, müşterilerinin geçiş hazırlığıyla kendi güvenlik gereksinimlerini dengelemek için karmaşık bir zorlukla karşı karşıyalar. Bugüne kadar, istemciler tarafından zayıf TLS kullanımı algılamak için IIS'de yeni günlük biçimleri göndererek ve TLS 1.0 bağımlılıklarını ortadan kaldırmaya yönelik en sonteknik yönergeleri sağlayarak eski işletim sistemlerine TLS 1.2 desteği ekleyerek müşterilerin bu sorunları çözmesine yardımcı olduk.

Artık Microsoft, TLS 1.2+ dünyasına geçişinizi kolaylaştırmak için Windows'taki güçlü yeni bir özelliği duyurmaktan mutluluk duyuyor. KB4490481'den başlayarak, Windows Server 2019 artık zayıf TLS sürümlerinin belirlediğiniz tek tek sertifikalarla kullanılmasını engellemenize olanak tanır. Bu özelliği "Eski TLS'yi Devre Dışı Bırak" olarak adlandırıyoruz ve seçtiğiniz herhangi bir sertifikada tls sürümünü ve şifre paketi zeminini etkili bir şekilde zorunlu kıldı.

Eski TLS'yi devre dışı bırakma çevrimiçi hizmetin aynı donanımda iki ayrı uç nokta grubu sunmasını da sağlar: biri yalnızca TLS 1.2+ trafiğine, diğeri ise eski TLS 1.0 trafiğine izin verir. Değişiklikler HTTP.sysuygulanır ve ek sertifikaların verilmesiyle trafiğin uygun TLS sürümüyle yeni uç noktaya yönlendirilmesine izin verir. Bu değişiklik öncesinde, bu tür ayarların yalnızca kayıt defteri aracılığıyla sistem genelinde yapılandırılabilir olması nedeniyle bu özelliklerin dağıtılması ek bir donanım yatırımı gerektirebilirdi.

Özellik senaryosu ayrıntıları

Yaygın bir dağıtım senaryosu, karma ihtiyaçları olan müşterilerin bulunduğu bir veri merkezinde bir donanım kümesi içerir: bazıları şu anda zorunlu en düşük değer olarak TLS 1.2'ye ihtiyaç duyar ve diğerleri TLS 1.0 bağımlılıklarını kaldırmayı bitirmez. Şekil 1'de TLS sürüm seçimi ve sertifika bağlama ayrı ayrı eylemler olarak gösterilmektedir. Bu, varsayılan işlevselliktir:

Varsayılan TLS Sürümü seçimi

Şekil 1: Varsayılan TLS Sürümü seçimi ve Sertifika Bağlama İşlevselliği

  • secure.contoso.com müşterilerinizi yalnızca TLS 1.2 ve üzerini destekleyen bir hizmet uç noktasına yönlendirir.

  • legacy.contoso.com, eski TLS 1.0 gereksinimleri olan müşterileri (TLS 1.2'ye geçiş yapanlar gibi) sınırlı bir süre için TLS 1.0'ı destekleyen bir uç noktaya yönlendirir. Bu, müşterilerin TLS 1.2 için hazır olma testini hizmet kesintisi olmadan ve TLS 1.2'ye hazır olan diğer müşterileri engellemeden bitirmesine olanak tanır.

Geleneksel olarak, en düşük protokol sürümüne sahip TLS isteklerine hizmet vermek için sistem genelinde kayıt defteri ayarları aracılığıyla daha zayıf protokollerin devre dışı bırakılması gerektiğinden, tüm trafiği işlemek ve TLS sürüm zorlaması sağlamak için fiziksel olarak ayrı iki ana bilgisayar gerekir. Bu işlevi, TLS oturumunun sertifikaya bağlı olduğu yığında daha yüksek oranda kullanılabilir hale getirdik, bu nedenle aşağıdaki Şekil 2'de açıklandığı gibi belirli bir en düşük TLS sürümü atanabilir.

Seçili sertifika için en düşük TLS sürümünü zorunlu kılma

Şekil 2: Secure.contoso.com üzerinde, seçili bir sertifika için minimum TLS sürümünü zorlayan Eski TLS özelliğini devre dışı bırakma.

Özellik dağıtımı kılavuzu

Eski TLS'yi Devre Dışı Bırak özelliği, PowerShell komutları veya C++ HTTP.sys API'leri aracılığıyla Internet Information Services (IIS) Sunucusu kullanıcı arabirimi aracılığıyla dağıtılabilir.

Seçenek 1: IIS kullanıcı arabirimi yapılandırması (Windows 10 sürüm 2004 ve Windows Server sürüm 2004 ve daha yeni sürümlerde kullanılabilir)

Aşağıda gösterildiği gibi SSL Sertifikası "secure.contoso.com" için bir site bağlaması oluşturun, ardından "Eski TLS'yi Devre Dışı Bırak" seçeneğini işaretleyin ve Tamam'a tıklayın.

IIS kullanıcı arabirimi

Seçenek 2: PowerShell (Windows 10 sürüm 2004 ve Windows Server sürüm 2004 ve daha yeni sürümlerde kullanılabilir)

PowerShell'de aşağıdaki gibi SSL bayraklarına başvurabilirsiniz:

[Microsoft.Web.Administration.SslFlags]::DisableLegacyTLS

Bunlar için daha kısa adlandırılmış değişkenler oluşturmak uygundur:

$Sni = [Microsoft.Web.Administration.SslFlags]::Sni
    
$Sni\_CCS = [Microsoft.Web.Administration.SslFlags]::Sni + [Microsoft.Web.Administration.SslFlags]::CentralCertStore
    
$CCS = [Microsoft.Web.Administration.SslFlags]::CentralCertStore
    
$DisableLegacyTLS = [Microsoft.Web.Administration.SslFlags]::DisableLegacyTLS
    
 $storeLocation = "Cert:\\LocalMachine\\My"

Yeni bir siteye site bağlaması oluşturma ve eski TLS'yi devre dışı bırakma örneği:

$BindingInformation = "\*:443:"

$siteName = "contoso"

$Thumbprint = $certificate.ThumbPrint

Sslflag DisableLegacyTLS özellik değeriyle New-IISSite:

New-IISSite $siteName "$env:systemdrive\\inetpub\\wwwroot" "\*:443:secure.contoso.com" https $certificate.Thumbprint $DisableLegacyTLS $storeLocation -passthru

Mevcut bir siteye site bağlaması ekleme ve eski TLS'yi devre dışı bırakma örneği:

New-IISSiteBinding -Name "Default Web Site" -BindingInformation $BindingInformation -CertificateThumbPrint $certificate.Thumbprint -Protocol https -SslFlag $DisableLegacyTLS, $CCS -Force -verbose

Buna ek olarak, netsh ile bu özelliğin sorunlarını giderebilir ve test edebilirsiniz:

  • Yeni bağlama ekleme:

    netsh http add sslcert <normal parametreler> disablelegacytls=enable

  • Mevcut bağlamayı güncelleştirme:

    netsh http update sslcert <normal parametreler> disablelegacytls=enable

  • Bağlamada ayarlanıp ayarlanmadığını denetleyin:

    netsh http show sslcert <düzenli parametreler>

    Eski TLS Sürümlerini Devre Dışı Bırak: Ayarla/Ayarlanmamış

Seçenek 3: C++ HTTP.sys API'leri (Şimdi Kullanılabilir)

Eski TLS'yi Devre Dışı Bırakmanın yanı sıra, HTTP.sysiçin aşağıdaki eklemeler yapılmıştır:

  • HTTP_SERVICE_CONFIG_SSL_PARAM. DefaultFlags artık aşağıdaki yeni değerleri destekler:

  • HTTP_SERVICE_CONFIG_SSL_FLAG_ENABLE_SESSION_TICKET: Belirli bir SSL uç noktası için Oturum Biletini etkinleştirin/devre dışı bırakın.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_LOG_EXTENDED_EVENTS: Belirli bir SSL uç noktası için genişletilmiş olay günlüğünü etkinleştirin/devre dışı bırakın. Ek olaylar Windows Olay Günlüğü'ne kaydedilir. Şu anda SSL el sıkışması başarısız olduğunda kaydedilen yalnızca bir olay desteklenir.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS: Belirli bir SSL uç noktası için eski TLS sürümlerini etkinleştirin/devre dışı bırakın. Bu bayrağın ayarlanması, bu uç nokta için TLS1.0/1.1'i devre dışı bırakır ve HTTP2 şifreleme paketleriyle kullanılabilecek şifreleme paketlerini kısıtlar.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_TLS12: Belirli bir SSL uç noktası için TLS1.2'yi etkinleştirin/devre dışı bırakın.

  • HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_HTTP2: Belirli bir SSL uç noktası için HTTP/2'yi etkinleştirin/devre dışı bırakın.

C++ dilinde sertifika başına bu işlevselliği etkinleştirmenin/devre dışı bırakmanın en kolay yolu HttpSetServiceConfiguration HTTP.sys API'si tarafından sağlanan HTTP_SERVICE_CONFIG_SSL_FLAG_DISABLE_LEGACY_TLS bayrağıdır.

Eski TLS'yi Devre Dışı Bırak ayarlandığında aşağıdaki kısıtlamalar uygulanır:

  • SSL2, SSL3, TLS1.0 ve TLS1.1 protokollerini devre dışı bırakın.

  • DES, 3DES ve RC4 şifreleme şifrelemelerini devre dışı bırakın (bu nedenle yalnızca AES kullanılır).

  • CBC zincirleme moduyla şifreleme şifreleme AES'yi devre dışı bırakın (bu nedenle yalnızca AES GCM kullanılır).

  • RSA anahtar değişimini devre dışı bırakın.

  • Anahtar boyutu 2048'den küçük olan DH anahtar değişimini devre dışı bırakın.

  • Anahtar boyutu 224'ten küçük olan ECDH anahtar değişimlerini devre dışı bırakın.

Bu değişikliklerin resmi belgelerinin docs.Microsoft.com'da yakında yayınlanması bekleniyor.

TLS sürüm zorlaması için atılacak sonraki adımlar

Eski TLS'yi devre dışı bırakma, belirli sertifika/uç nokta bağlamalarında TLS sürümünü/şifreleme paketi katlarını zorunlu kılmaya yönelik güçlü yeni özellikler sağlar. Ayrıca, bu işlev etkinken verilen sertifikaların adlandırmasını planlamanızı da gerektirir. Dikkat edilmesi gerekenlerden bazıları şunlardır:

  • Hizmet uç noktamın varsayılan yolunun bugün TLS 1.2'yi zorunlu kılmasını ve TLS 1.0'a ihtiyacı olan kullanıcılar için yedek "eski" erişim noktası olarak farklı bir sertifika sağlamasını ister miyim?

  • Varsayılan ve şu anda kullanımda olan Contoso sertifikamda Eski TLS'yi Devre Dışı Bırak özelliğini kullanmalı mıyım? Bu durumda, bir legacy.contoso.com sertifikası sağlamam ve bunu TLS 1.0'a izin veren bir uç noktaya bağlamam gerekebilir.

  • Bu sertifikaların önerilen kullanımını müşterilerime en iyi nasıl iletebilirim?

TlS 1.2+ kullanma yükümlülüğü olan ve tls 1.0'dan geçiş üzerinde çalışmaya devam eden büyük müşteri gruplarının ihtiyaçlarını karşılamak için ek donanım harcaması olmadan bu özellikten yararlanabilirsiniz. Bugün Windows Server 2019'da sertifika başına TLS sürüm bağlamasının kullanılabilirliğine ek olarak, Microsoft müşteri talebine bağlı olarak Eski TLS'yi Devre Dışı Bırak özelliğini çevrimiçi hizmetlerinde kullanıma sunacaktır.