TLS 1.0 Sorununu Çözme, 2. Sürüm
Andrew Marshall tarafından
Asıl Güvenlik Program Yöneticisi
Microsoft Corporation
Yönetici Özeti
Bu belgede, Microsoft işletim sistemleri üzerine yerleşik yazılımlarda Aktarım Katmanı Güvenliği (TLS) protokolü sürüm 1.0 bağımlılıklarının hızlı bir şekilde belirlenmesi ve kaldırılmasıyla ilgili en son kılavuz bilgileri sunar. Microsoft tarafından kendi müşterilerinizi ve çevrimiçi hizmetlerinizi korumak için teslim edilen ürün değişiklikleri ve yeni özelliklerle ilgili ayrıntıları izleyin. TLS 1.2+ ağ ortamına geçiş planı oluşturmak için başlangıç noktası olarak kullanılmak üzere tasarlanmıştır. Burada tartışılan çözümler Microsoft dışı işletim sistemlerinde veya şifreleme kitaplıklarında TLS 1.0 kullanımını kaldırmaya devam edebilir ve yardımcı olabilir, ancak bunlar bu belgenin odağı değildir.
TLS 1.0, ilk olarak 1999'da bilgisayar ağları üzerinden şifreleme kanalları kurmak için tanımlanan bir güvenlik protokolüdür. Microsoft, XP/Server 2003'ten Windows bu protokolü destekliyor. Modern işletim sistemi tarafından artık varsayılan güvenlik protokolü kullanımsa da, geriye dönük uyumluluk için TLS 1.0 hala de destek almaktadır. TLS 1.0'daki yeni güvenlik açıkları gibi, mevzuat gereksinimlerini geliştirmek, şirketlere TLS 1.0'ı tamamen devre dışı bırakma teşviki sağlar.
Microsoft, ortamlarında TLS 1.0 bağımlılıklarını kaldırarak ve mümkün olduğunca işletim sistemi düzeyinde TLS 1.0'u devre dışı bırakarak müşterilerin bu sorundan geri adım atmalarını önerir. TLS 1.0'ın yazılım sektörü tarafından destek verdiği süreye göre, herhangi bir TLS 1.0 kullanımdan kullanım dışı planının aşağıdakileri içermesi kesinlikle önerilir:
TLS 1.0 veya daha eski güvenlik protokollerinin sabit kodlu örneklerini bulmak/düzeltmek için kod çözümlemesi.
TLS 1.0 veya daha eski protokolleri kullanan işletim sistemlerini tanımlamak için ağ uç noktası tarama ve trafik çözümlemesi.
TLS 1.0 devre dışı bırakılmış şekilde tüm uygulama yığınınız boyunca tam regresyon testi.
Varsayılan olarak TLS 1.2'yi çalıştırma özelliğine sahip sürümlere eski işletim sistemlerinin ve geliştirme kitaplıklarının/çerçevelerin geçişi.
İşletmeniz tarafından herhangi bir TLS 1.2 destek sorunu belirlemek için kullanılan işletim sistemleri arasında uyumluluk testi.
TLS 1.0'ın kullanım dışı durumuna nasıl geçeceğizleri hakkında bilgi sahibi olmak için, kendi iş ortaklarıyla ve müşterilerinizle koordinasyon.
TLS 1.0 devre dışı bırakılmıştır ve sunucularınızı artık hangi istemcilerin bağlanamayabileceklerini anlama.
Bu belgenin amacı, TLS 1.0'ı devre dışı bırakmaya ve aynı zamanda bu değişikliğin kendi müşterileriniz üzerindeki etkisinin görünürlüğünü artırmaya yardımcı olacak teknik engelleyicileri kaldırmaya yardımcı olacak öneriler sağlamaktır. Bu tür soruşturmaların tamamlanması TLS 1.0'da bir sonraki güvenlik açığının ticari etkisini azaltmaya yardımcı olabilir. Bu belge amaçları doğrultusunda, TLS 1.0'ın kullanımdan başvurusu TLS 1.1'i de içerir.
Enterprise yazılım geliştiricilerinin, gelecekte güvenlik protokolünün tehlikeye atlarına neden olması için, gelecekte daha güvenli ve çevik çözümler (Crypto Agility olarak bilinir) benimsemeleri stratejik bir ihtiyacı vardır. Bu belgede çevik çözümler TLS hardcoding'in elemesi için öneride de yer alırken, daha geniş Crypto Agility çözümleri bu belgenin kapsamı dışındadır.
Microsoft TLS 1.0 uygulamasının Geçerli Durumu
Microsoft'un TLS 1.0 uygulaması bilinen güvenlik açıklarından ücretsizdir. Microsoft'un uygulamasına özgü değildir, gelecekteki protokol saldırılarının ve diğer TLS 1.0 güvenlik açıklarının olası nedeniyle, mümkün olduğu yerde TLS 1.2'den daha eski tüm güvenlik protokollerine bağımlılıkların kaldırılması önerilir (TLS 1.1/1.0/ SSLv3/SSLv2).
TLS 1.2+ sürümüne bu geçişi planken, geliştiriciler ve sistem yöneticileri çalışanları ve iş ortakları tarafından geliştirilen uygulamalarda protokol sürümünün sabit tanınma potansiyelinin farkında olması gerekir. Burada hardcoding, TLS sürümünün güncel değildir ve daha yeni sürümlere göre daha az güvenli olduğu anlamına gelir. Sabit kodlı sürümden daha yeni TLS sürümleri söz konusu programda değişiklik yapmadan kullanılamaz. Bu sorun sınıfı, kaynak kod değişiklikleri ve yazılım güncelleştirme dağıtımı olmadan çözüm edilemez. Protokol sürümü sabitcoding, birçok farklı tarayıcı ve işletim sistemi farklı TLS desteği düzeylerine sahipti ve test ve destek amacıyla geçmişte yaygın olarak yer aldı.
Dağıtılan işletim sistemlerinde TLS 1.2 desteği sağlama
Birçok işletim sisteminde hesapn olması gereken güncel TLS sürüm varsayılanları veya destek tavanları vardır. TLS Windows 8/Server 2012 veya sonraki bir sürümünün kullanımı, TLS 1.2'nin varsayılan güvenlik protokolü sürümü olduğu anlamına gelir:
Şekil 1: Işletim Sistemi Sürümüne Göre Güvenlik Protokolü Desteği
| Windows işletim sistemi | SSLv2 | SSLv3 | TLS 1.0 | TLS 1.1 | TLS 1.2 |
|---|---|---|---|---|---|
| Windows Vista | Etkin | Etkin | Default | Desteklenmiyor | Desteklenmiyor |
| Windows Server 2008 | Etkin | Etkin | Default | Devre Dışı* | Devre Dışı* |
| Windows 7 (WS2008 R2) | Etkin | Etkin | Default | Devre Dışı* | Devre Dışı* |
| Windows 8 (WS2012) | Devre dışı | Etkin | Etkin | Etkin | Default |
| Windows 8.1 (WS2012 R2) | Devre dışı | Etkin | Etkin | Etkin | Default |
| Windows 10 | Devre dışı | Etkin | Etkin | Etkin | Default |
| Windows Server 2016 | Desteklenmiyor | Devre dışı | Etkin | Etkin | Default |
*TLS 1.1/1.2, bu isteğe Windows Güncelleştirme paketi aracılığıyla Windows Server 2008 Windows etkinleştirilebilir.
IE/Edge'de TLS 1.0/1.1'in kullanımdan bırakılması hakkında daha fazla bilgi için yeni Edge Tarayıcısında Microsoft Edge ve Internet Explorer 11'de TLSbağlantılarını modernleştirme , Microsoft Edge'a gelen site uyumluluğu etkileyen değişiklikler ve TLS/1.0 ve TLS/1.1'i devre dışı bırakma'ya bakın.
Çevrimiçi hizmetlerinize bağlanırken çeşitli istemciler tarafından hangi TLS sürümünün isteneceklerini belirlemenin hızlı bir yolu, Qualys SSL Laboratuvarları'nda El Sıkışma Benzetimi'ne başvuru yapmaktır. Bu benzetim, üreticiler arasında istemci işletim sistemi/tarayıcı bileşimlerini kapsar. bu belgeye bağlanırken çeşitli sanal istemci işletim sistemi/tarayıcı bileşimleri tarafından görüşmede ilen TLS protokolü sürümlerini gösteren ayrıntılı bir örnek için, bu belgenin sonundaki Ek A www.microsoft.com.
Henüz tamamlanmadı ise, kuruluş, müşteriler ve iş ortakları (outreach/communication veya en az HTTP User-Agent dize koleksiyonu aracılığıyla) tarafından kullanılan işletim sistemlerinin envanterini yürütmeniz kesinlikle önerilir. Bu envanteri, kurumsal ağ kenarda trafik çözümlemesi ile daha da destek sağlandı. Böyle bir durumda, trafik çözümlemesi TLS sürümlerinin hizmetlerinize bağlanan müşteriler/ortaklar tarafından başarılı bir şekilde görüşmesini sağlar, ancak trafiğin kendisi şifrelenmiş kalır.
Microsoft'un TLS 1.0 bağımlılıklarını ortadan kaldırmak için Mühendislik Geliştirmeleri
Bu belgenin v1 sürümü bu yana, Microsoft TLS 1.0'ın kullanımdan çıkarılıyor desteği için bir dizi yazılım güncelleştirmesi ve yeni özellik yayımladı. Bunlar:
İstemci IP/kullanıcı aracısı dizesini, hizmet URI'sini, TLS protokol sürümünü ve şifreleme paketini birbiriyle bağlantılı yapmak için IIS özel günlüğü.
- Bu günlük kaydıyla, yöneticiler sonunda müşterilerinin zayıf TLS'ye maruz kalma düzeyini belirtebilir.
SecureScore - Kiracı yöneticilerinin Office 365 zayıf TLS kullanımlarını belirlemelerine yardımcı olmak için, Ekim 2018'de bu bilgileri TLS 1.0 desteğindan çıkıldı olarak paylaşmak için Güvenli Çizgi portalı Office 365'te yerleşik olarak yer aldı.
Bu portal Office 365 kiracı yöneticilerine, kendi TLS 1.0 bağımlılıklarını fark etmezlerken kendi müşterilerine ulaşmak için ihtiyaçları olan değerli bilgileri sağlar.
Daha fazla https://securescore.microsoft.com/ bilgi için lütfen ziyaret edin.
Uygulama düzeyinde sabit kapsamları ortadan kaldırmak ve framework devralınan TLS 1.0 bağımlılıklarını önlemek için .Net Framework güncelleştirmeleri.
Geliştirici Kılavuzu ve yazılım güncelleştirmeleri, müşterilerin zayıf TLS'lerde .Net bağımlılıklarını tanımlamalarına ve ortadan kaldırmalarına yardımcı olmak için yayınlandı: En iyi Aktarım Katmanı Güvenliği (TLS) en iyi .NET Framework
- Bilgi: Büyük olasılıkla TLS 1.2'yi desteklemek için .NET 4.5 veya daha düşük olan tüm uygulamaların değiştirilmesi gerekir.
TLS 1.2, eski yükümlülükleri olan müşterilere yardımcı olmak için Windows Server 2008 SP2 ve XP POSReady 2009'a geri teslim edildi.
2019'un başlarında daha fazla duyuru yapılacaktır ve bu belgenin sonraki güncelleştirmeleri ile açıklanacak.
Kodda TLS 1.0 bağımlılıklarını bulma ve düzeltme
OS tarafından Windows şifreleme kitaplıkları ve güvenlik protokollerini kullanan ürünlerde, aşağıdaki adımlar uygulamalarınıza sabit kod girmiş TLS 1.0 kullanımını belirlemeye yardımcı olacaktır:
AcquireCredentialsHandle'ıntüm örneklerini tanımlama (. Bu, gözden geçirenlerin TLS'nin sabit kodlu olduğu kod bloklarına daha yakın olmasına yardımcı olur.
Sabit kod tlS için SecPkgContext_SupportedProtocolsve SecPkgContext_ConnectionInfo örneklerini gözden geçirin.
Yerel kodda, grbitEnabledProtocols için sıfır olmayan tüm atamaları sıfır olarak ayarlayın. Bu, işletim sisteminin varsayılan TLS sürümünü kullanmasını sağlar.
FiPS Modu, bu belgede TLS 1.0/1.1'i açıkça devre dışı bırakmak için gereken ayarlarla çakışma olasıdan dolayı etkinse, FIPS Modunu devre dışı bırak. Daha fazla bilgi için B eke bakın.
Sunucu 2012 veya daha eski bir derlemede barındırılan WinHTTP kullanarak uygulamaları güncelleştirin ve yeniden güncelleştirin.
Yönetilen uygulamalar – en son sürüme karşı yeniden oluşturma .NET Framework oluşturma
Uygulamaların WinhttpSetOption aracılığıyla TLS 1.2'yi desteklemesi için kod eklemesi gerekir
Tüm tabanları kapsayacak şekilde, aşağıda, TLS sabitcodingsinde yaygın olarak kullanılan numaralanan tür değerlerine karşılık gelen desenleri içeren kaynak kodu ve çevrimiçi hizmet yapılandırma dosyalarını tarayın:
SecurityProtocolType
SSLv2, SSLv23, SSLv3, TLS1, TLS 10, TLS11
WINHTTP_FLAG_SECURE_PROTOCOL_
SP_PROT_
NSStreamSocketSecurityLevel
PROTOCOL_SSL veya PROTOCOL_TLS
Yukarıda her durumda önerilen çözüm, sabit kod protokolü sürüm seçimini kaldırmak ve işletim sisteminin varsayılana ertelemesini yapmaktır. DevSkimkullanıyorsanız, kendi koduyla kullanabileceğiniz yukarıdaki denetimleri kapsayan kuralları görmek için buraya tıklayın.
Betikleri Windows PowerShell ilgili kayıt defteri ayarlarını güncelleştirme
Windows PowerShell, .NET Framework protokol olarak TLS 1.2'yi içermek için 4.5'i kullanır. Bu çözüme çözüm olarak iki çözüm vardır:
1. Modify the script in question to include the following:
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;
2. Add a system-wide registry key (e.g. via group policy) to any machine that needs to make TLS 1.2 connections from a .NET app. This will cause .NET to use the "System Default" TLS versions which adds TLS 1.2 as an available protocol AND it will allow the scripts to use future TLS Versions when the OS supports them. (e.g. TLS 1.3)
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64
reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32
Çözümler (1) ve (2) birbirini dışlar; başka bir ifadeyle birlikte uygulanmaları gerekmektedir.
En son .Net Framework sürümünü kullanarak yönetilen uygulamaları yeniden oluşturma/yeniden oluşturma
4.7'den önceki .NET Framework sürümlerini kullanan uygulamaların, temel işletim sistemi varsayılanlarına bakılmaksızın TLS 1.0 desteğini etkili bir şekilde sınırlandırmaları olabilir. Daha fazla bilgi için aşağıdaki https://docs.microsoft.com/dotnet/framework/network-programming/tls diyagrama bakın.

SystemDefaultTLSVersion, TLS sürümlerinin uygulama düzeyinde hedeflemeye göre öncelikli olur. Önerilen en iyi yöntem, her zaman işletim sistemi varsayılan TLS sürümüne ertelemektir. Ayrıca uygulamalarınızı gelecekteki TLS 1.3 desteğiden yararlanmalarını sağlayan tek şifreleme çevik çözümü de bu çözümdür.
.NET Framework'in 4.5.2 veya 3.5 gibi eski sürümlerini hedef alıyorsanız, varsayılan olarak, uygulamanız SSL 3.0 veya TLS 1.0 gibi daha eski ve önerilmez protokolleri kullanır. .NET Framework'in .NET Framework 4.6 gibi daha yeni sürümlerine yükseltmeniz veya 'UseStrongCrypto' için uygun kayıt defteri anahtarlarını ayarlamanız kesinlikle önerilir.
TLS 1.2+ ile test etme
Yukarıdaki bölümde önerilen düzeltmelerin ardından, ürünler protokol görüşmeler hataları ve işletmenizin diğer işletim sistemleriyle uyumluluk için regresyon ile test edilmiş olması gerekir.
Bu regresyon testlerinin en yaygın sorunu, TLS 1.2'yi desteklemeyen bir işletim sisteminden veya tarayıcıdan istemci bağlantısı girişimi nedeniyle TLS görüşmeler hatasıdır.
- Örneğin, Vista istemcisi TLS 1.2+ için yapılandırılmış bir sunucuyla TLS üzerinde görüşmede başarısız olur çünkü Vista'nın en çok desteklenen TLS sürümü 1.0'dır. Bu istemci TLS 1.2+ ortamında yükseltil olmalı veya kaldırmalıdır.
Sertifika tabanlı Mutual TLS kimlik doğrulaması kullanan ürünler, TLS 1.0 ile ilişkilendirilmiş sertifika seçim kodu TLS 1.2'ye göre daha az ifade edici olduğu için ek regresyon testi gerekli olabilir.
- Bir ürün standart olmayan bir konumdan (Windows'daki standart adlandırılmış sertifika depolarının dışında) bir sertifika ile MTLS üzerinde görüşmede bulunduğu zaman, sertifikanın doğru şekilde alın olduğundan emin olmak için kodun güncelleştirilması gerekiyor olabilir.
Hizmet bağımlılıkları, sorunlu noktalar için gözden geçir gerekir.
Üçüncü taraf hizmetleriyle birlikteçalışabilen tüm hizmetler, bu 3 üçüncü tarafla ek birlikte çalışmatesti yürütmeli.
Kullanım Windows olmayan uygulamalar veya sunucu işletim sistemleri için araştırma / TLS 1.2'yi destekley olduklarının onayı gerekir. Tarama bunu belirlemenin en kolay yolu.
Çevrimiçi bir hizmette bu değişiklikleri test etmeyle ilgili basit bir şema aşağıdan oluşur:
TLS 1.2'yi desteklemeen işletim sistemlerini tanımlamak için üretim ortamı sistemlerinin taramasını yürütme.
" KoddaTLS 1.0bağımlılıklarını bulma ve düzeltme " konusunda açıklandığı gibi, kaynak kodunu ve çevrimiçi hizmet yapılandırma dosyalarını zor kodlu TLS için tarayın
Uygulamaları gereken şekilde güncelleştirin/yeniden güncelleştirin:
Yönetilen uygulamalar
En son sürüme karşı .NET Framework oluşturma.
OS varsayılan ayarlarını kullanmak için SSLProtocols enumeration kullanımının SSLProtocols.None olarak ayar olduğunu doğrulayın.
WinHTTP uygulamaları – TLS 1.2'yi desteklemek için WinhttpSetOption ile yeniden oluşturun
Kayıt defteri aracılığıyla TLS 1.2'den eski tüm güvenlik protokolleri devre dışı bırakılmıştır ve üretim öncesi veya hazırlama ortamında teste başlayabilirsiniz.
Kalan tüm TLS örneklerini test sırasında karşılaşıldıklarında düzeltin. Yazılımı yeniden çalıştırın ve yeni bir regresyon testi çalıştırması gerçekleştirin.
İş ortaklarına TLS 1.0 kullanımdan kullanım planlarını bildirme
TLS sabitcoding ele alındıktan ve işletim sistemi/geliştirme çerçevesi güncelleştirmeleri tamamlandıktan sonra, TLS 1.0'ın kullanımdan alınması için müşteriler ve iş ortaklarıyla birlikte çalışmalarınız gerekir:
Erken iş ortağı/müşteri outreach, başarılı bir TLS 1.0 kullanımdan çıkma kodu için çok önemlidir. En azından blog gönderileri, teknik yazılar veya diğer web içeriklerinden oluşur.
Yukarıdaki bölümlerde açıklanan işletim sistemi/kod tarama/regresyon test girişimleri aracılığıyla her bir iş ortağının kendi TLS 1.2 hazırlığı değerlendirmesi gerekir.
Sonuç
TLS 1.0 bağımlılıklarını kaldırmak sona kadar devam etmek için karmaşık bir sorundur. işletim sistemi bileşenleri ve geliştirme çerçevelerimizin ve bu bileşenlerin üzerine yerleşik uygulamalar/hizmetlere kadar tüm ürün yığınımızın varsayılan olarak daha güvenli olmasını sağlamak için Microsoft ve endüstri iş ortakları bugün üzerinde harekete geçmektedir. Bu belgede yapılan önerilerin ardından kurumsal grafiğinize doğru kursta yardımcı olur ve nelerin beklemesi gereken güçlükleri bilebilirsiniz. Ayrıca, kendi müşterilerimizin geçişe daha fazla hazırlıklı olmasında da yardımcı olur.
Ek A: Www.microsoft.com bağlantı sağlayan çeşitli istemciler için el sıkışmasıBenzetimi , SSLLabs.com

Ek B: FIPS Modu korunurken TLS 1.0/1.1'i kullanımdan kullanımdan kullanımdan tutma
Ağınız FIPS Modu gerektiriyorsa ama TLS 1.0/1.1'i de kullanımdandan etmek istiyorsanız aşağıdaki adımları izleyin:
İstenmeyen TLS sürümleri için"Etkin" değerini sıfır olarak ayarerek, kayıt defteri aracılığıyla TLS sürümlerini yapılandırabilirsiniz.
Grup İlkesi aracılığıyla Eğri 25519'ı (yalnızca Sunucu 2016) devre dışı bırak.
İlgili FIPS yayını tarafından izin verilmiyor algoritmaları kullanarak şifreleme paketlerini devre dışı bırak. Server 2016 için (varsayılan ayarların etkili olduğu varsayıldı) bu RC4, PSK ve NULL şifrelemelerini devre dışı bırakmak anlamına gelir.
Katkıda Bulunanlar/Teşekkür
Mark Cartwright
Oya Sn.
Patrick Ormanları
Michael Scovtta
Tony Rice
David LeBlanc
Mortimer Cook
Daniel Sommermmermmer
Aloi Popov
Michiko Short
Justin Burke
Gov Maha gandhi
Brad Turner
Sean SeanOn