.NET Framework ile Aktarım Katmanı Güvenliği (TLS) en iyi yöntemleri

Not

Bu sayfa .NET Framework TLS bilgilerini içerir. .NET TLS bilgilerini arıyorsanız bkz. TLS/SSL En İyi Yöntemleri

.NET Framework, ağ iletişimlerinin güvenliğini sağlamak için Aktarım Katmanı Güvenliği (TLS) protokolünün kullanımını destekler.

Aktarım Katmanı Güvenliği (TLS) nedir?

Uyarı

TLS 1.0 ve 1.1 RFC8996 tarafından kullanım dışı bırakılmıştır. Bu belge yalnızca TLS 1.2 ve TLS 1.3'i kapsar.

Aktarım Katmanı Güvenliği (TLS) protokolü, İnternet üzerinden iletişim kuran bilgilerin gizliliğini korumaya yardımcı olmak için tasarlanmış, standardın endüstrinin en son sürümüdür. TLS 1.3 , önceki sürümlere göre güvenlik iyileştirmeleri sağlayan bir standarttır. Bu makalede, TLS protokolünü kullanan .NET Framework uygulamalarının güvenliğini sağlama önerileri sağlanır.

Bu belgeden kimler yararlanabilir?

.NET Framework'te TLS desteği

.NET Framework Windows'a Schannel bağımlı olduğundan, hangi sürümlerin üzerinde anlaşılabileceğini ve hangi sürümün kullanılacağını işletim sistemine bağlıdır.

aşağıda, işletim sistemi sürümlerinin ve .NET Framework hedef sürümlerinin farklı bileşimleri için desteklenen en yüksek TLS sürümünü gösteren güncelleştirilmiş bir örnek tablo verilmiştir:

.NET Framework Hedef Sürümü Windows 10 Windows 11
3.5 TLS 1.2 TLS 1.2
4.6.2 TLS 1.2 TLS 1.3
4.7 TLS 1.2 TLS 1.3
4.7.1 TLS 1.2 TLS 1.3
4.7.2 TLS 1.2 TLS 1.3
4.8 TLS 1.2 TLS 1.3
4.8.1 TLS 1.2 TLS 1.3

Daha fazla bilgi için bkz. Schannel'de TLS protokol sürümü desteği.

Öneriler

  • TLS 1.3 için hedef .NET Framework 4.8 veya üzeri.
  • TLS sürümünü açıkça belirtmeyin. Kodunuzu, işletim sisteminin TLS sürümüne karar vermesine izin verecek şekilde yapılandırın.
  • TlS veya SSL sürümünü açıkça belirtmediğinizden emin olmak için kapsamlı bir kod denetimi gerçekleştirin.
  • kullanmayın SslProtocols.Default. (SslProtocols.Default SSL3 ve TLS1.0 sürümünü belirtir ve bu sürüm geçersizdir.)

Uygulamanız işletim sisteminin TLS sürümünü seçmesine izin veriyorsa:

  • Gelecekte eklenen yeni protokollerden otomatik olarak yararlanır.
  • İşletim sistemi, güvenli olmadığı bulunan protokolleri engeller.

Kodunuzu denetleme ve kod değişiklikleri yapma bölümünde kodunuzun denetlenmesi ve güncelleştirilmesi yer alır.

Bu makalede, uygulamanızın hedefleyip üzerinde çalıştığı .NET Framework sürümü için kullanılabilir en güçlü güvenliğin nasıl etkinleştirileceği açıklanmaktadır. Bir uygulama açıkça bir güvenlik protokolü ve sürümü belirlediğinde, başka bir alternatiften vazgeçer ve .NET Framework ve işletim sistemi varsayılan davranışından vazgeçer. Uygulamanızın TLS 1.3 bağlantısı anlaşması yapabilmesini istiyorsanız, açıkça daha düşük bir TLS sürümüne ayarlamak TLS 1.3 bağlantısını engeller.

Açıkça bir protokol sürümü belirtmekten kaçınamıyorsanız, TLS1.2 veya TLS 1.3 (yani currently considered secure) belirtmenizi kesinlikle öneririz. TLS 1.0 bağımlılıklarını tanımlama ve kaldırma konusunda rehberlik için TLS 1.0 Sorununu Çözme teknik incelemesini indirin.

WCF, .NET Framework 4.7'de varsayılan olarak TLS 1.2'yi destekler. .NET Framework 4.7.1'den başlayarak, WCF varsayılan olarak işletim sistemi tarafından yapılandırılmış sürümü kullanır. Bir uygulama ile SslProtocols.Noneaçıkça yapılandırılmışsa, WCF NetTcp aktarımını kullanırken işletim sistemi varsayılan ayarını kullanır.

GitHub sorunu aktarım katmanı güvenliği (TLS) en iyi yöntemleri .NET Framework ile bu belge hakkında sorular sorabilirsiniz.

Kodunuzu denetleme ve kod değişiklikleri yapma

ASP.NET uygulamaları için web.config öğesini inceleyerek <system.web><httpRuntime targetFramework> .NET Framework'ün hedeflenen sürümünü kullandığınızı doğrulayın.

Windows Forms ve diğer uygulamalar için bkz . Nasıl yapılır: .NET Framework Sürümünü Hedefleme.

Belirli bir TLS veya SSL sürümü kullanmadığınızı doğrulamak için aşağıdaki bölümleri kullanın.

Açıkça bir Güvenlik Protokolü ayarlamanız gerekiyorsa

.NET veya işletim sisteminin güvenlik protokolünün şu protokolleri seçmesine izin vermek yerine açıkça bir güvenlik protokolü ayarlamanız gerekiyorsa:

  • .NET Framework 3.5 için: TLS 1.2
  • .NET Framework 4.6.2 veya üzeri için: TLS 1.3

Belirtilen protokolleri sabit listesinde bulamazsanız, bunları bir uzantı dosyası olarak ekleyebilirsiniz. Aşağıya bakın:

SslProtocolExtensions.cs

namespace System.Security.Authentication
{
    public static class SslProtocolsExtensions
    {
        // For .NET Framework 3.5
        public const SslProtocols Tls12 = (SslProtocols)3072;
        // For .NET Framework 4.6.2 and later
        public const SslProtocols Tls13 = (SslProtocols)12288;
    }
}

SecurityProtocolExtensions.cs

using System.Security.Authentication;

namespace System.Net
{
    public static class SecurityProtocolTypeExtensions
    {
        // For .NET Framework 3.5
        public const SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12;
        // For .NET Framework 4.6.2 and later
        public const SecurityProtocolType Tls13 = (SecurityProtocolType)SslProtocolsExtensions.Tls13;
    }
}

Daha fazla bilgi için bkz . Windows 8.1 ve Windows Server 2012 R2 üzerinde .NET Framework 3.5'te bulunan TLS Sistem Varsayılan Sürümleri desteği.

System.Net API'leri için (HttpClient, SslStream)

Uygulamanız .NET Framework 4.7 veya sonraki sürümleri hedeflediyse

Aşağıdaki bölümlerde uygulamanızı TLS kullanacak currently considered secure versions şekilde yapılandırma gösterilmektedir. (TLS 1.2, TLS 1.3)

HttpClient ve HttpWebRequest için

ServicePointManager, .NET Framework 4.7 ve sonraki sürümlerini kullanarak işletim sisteminde yapılandırılan varsayılan güvenlik protokollerini kullanır. Varsayılan işletim sistemi seçimini almak için, mümkünse özelliği için ServicePointManager.SecurityProtocol varsayılan SecurityProtocolType.SystemDefaultolarak olarak ayarlanmış bir değer ayarlamayın.

Ayarın SecurityProtocolType.SystemDefault işletim sistemi tarafından yapılandırılan varsayılan güvenlik protokollerini kullanmasına neden olduğundan ServicePointManager , uygulamanız üzerinde çalıştırıldığı işletim sistemine göre farklı çalışabilir. Örneğin, Windows 10 TLS 1.2 kullanırken Windows 11 TLS 1.3 kullanır.

SslStream için

SslStream, .NET Framework 4.7 ve sonraki sürümleri kullanarak varsayılan olarak en iyi güvenlik protokol ve sürümünü seçen işletim sistemidir. Varsayılan işletim sistemi en iyi seçeneğini elde etmek için, mümkünse, açık SslProtocols bir parametre alan yönteminin aşırı yüklemelerini SslStream kullanmayın. Aksi takdirde, geçirin SslProtocols.None. kullanmamanızı Defaultöneririz; ayarı SslProtocols.Default SSL 3.0 /TLS 1.0 kullanımını zorlar ve TLS 1.2'yi engeller.

özelliği için SecurityProtocol bir değer ayarlamayın (HTTP ağı için).

Açık SslProtocols bir parametre alan yönteminin aşırı yüklemelerini SslStream kullanmayın (TCP yuva ağı için). Uygulamanızı .NET Framework 4.7 veya sonraki sürümlerine yeniden hedeflediğinizde en iyi yöntemler önerisini izlersiniz.

WCF Uygulamaları için

Uygulamanız .NET Framework 4.7 veya sonraki sürümleri hedeflediyse

Aşağıdaki bölümlerde uygulamanızı TLS kullanacak currently considered secure versions şekilde yapılandırma gösterilmektedir. (TLS 1.2, TLS 1.3)

Sertifika kimlik bilgileriyle aktarım güvenliğini kullanarak TCP aktarımını kullanma

WCF, .NET Framework'ün geri kalanıyla aynı ağ yığınını kullanır.

4.7.1'i hedeflediyseniz WCF, açıkça yapılandırılmadığı sürece işletim sisteminin varsayılan olarak en iyi güvenlik protokollerini seçmesine izin verecek şekilde yapılandırılır:

  • Uygulama yapılandırma dosyanızda.
  • Veya kaynak kodundaki uygulamanızda.

Varsayılan olarak, .NET Framework 4.7 ve sonraki sürümleri TLS 1.2 kullanacak şekilde yapılandırılır ve TLS 1.1 veya TLS 1.0 kullanan bağlantılara izin verir. WCF'yi, bağlamanızı kullanacak SslProtocols.Noneşekilde yapılandırarak işletim sisteminin en iyi güvenlik protokollerini seçmesine izin verecek şekilde yapılandırın. Bu, üzerinde SslProtocolsayarlanabilir. SslProtocols.None 'den Transporterişilebilir. NetTcpSecurity.Transport 'den Securityerişilebilir.

Özel bağlama kullanıyorsanız:

  • WCF'yi, işletim sisteminin kullanılacak SslProtocols.Noneşekilde ayarlayarak SslProtocols en iyi güvenlik protokollerini seçmesine izin verecek şekilde yapılandırın.
  • Veya yapılandırma yolu system.serviceModel/bindings/customBinding/binding/sslStreamSecurity:sslProtocolsile kullanılan protokolü yapılandırın.

Özel bağlama kullanmıyorsanız ve WCF bağlamanızı yapılandırmayı kullanarak ayarlıyorsunuzsa, yapılandırma yolu system.serviceModel/bindings/netTcpBinding/binding/security/transport:sslProtocolsile kullanılan protokolü ayarlayın.

İleti Güvenliği'ni sertifika kimlik bilgileriyle kullanma

.NET Framework 4.7 ve sonraki sürümleri varsayılan olarak özelliğinde SecurityProtocol belirtilen protokolü kullanır. AppContextSwitchSwitch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols olarak ayarlandığında trueWCF, TLS 1.0'a kadar en iyi protokolü seçer.

Uygulamanız 4.7'den önceki bir .NET Framework sürümünü hedeflediyse

Aşağıdaki bölümlerde uygulamanızı TLS kullanacak currently considered secure versions şekilde yapılandırma gösterilmektedir. (TLS 1.2, TLS 1.3)

Sertifika Kimlik Bilgileri ile TCP aktarım güvenliğini kullanarak .NET Framework 4.6.2 kullanma

WCF çerçevesi, açıkça bir protokol sürümü yapılandırmadığınız sürece TLS 1.2'ye kadar kullanılabilen en yüksek protokolü otomatik olarak seçer. Daha fazla bilgi için, sertifika kimlik bilgileriyle aktarım güvenliği kullanılarak WCF TCP aktarımı için önceki bölüme bakın.

Sertifika Kimlik Bilgileri ile TCP aktarım güvenliğini kullanarak .NET Framework 3.5 kullanma

WCF çerçevesinin bu sürümleri SSL 3.0 ve TLS 1.0 değerlerini kullanmak için açıkça belirtilir. Bu değerler değiştirilemez. TLS 1.2 kullanmak için NET Framework 4.6.2 veya sonraki sürümleri güncelleştirmeniz ve yeniden hedeflemeniz gerekir.

AppContext anahtarları aracılığıyla güvenliği yapılandırma (.NET Framework 4.6.2 veya sonraki sürümleri için)

Bu bölümde açıklanan AppContext anahtarları, uygulamanızın .NET Framework 4.6.2 veya sonraki sürümlerini hedeflemesi veya üzerinde çalışması durumunda geçerlidir. İster varsayılan olarak ister bunları açıkça ayarlayarak, mümkünse anahtarlar olmalıdır false . Güvenliği bir veya her iki anahtar aracılığıyla yapılandırmak istiyorsanız, kodunuzda bir güvenlik protokolü değeri belirtmeyin; bunu yaptığınızda anahtar(lar) geçersiz kılınırdı.

System.Net API'leri için (HttpClient, SslStream)

İSTER HTTP ağı () ister TCP yuva ağı (ServicePointManagerSslStream ) yapıyor olun, anahtarlar aynı etkiye sahiptir.

Switch.System.Net.DontEnableSchUseStrongCrypto

değeri, Switch.System.Net.DontEnableSchUseStrongCrypto uygulamanızın false güçlü şifreleme kullanmasına neden olur. için DontEnableSchUseStrongCrypto değeri false daha güvenli ağ protokolleri (TLS 1.2 ve TLS 1.1) kullanır ve güvenli olmayan protokolleri engeller. Daha fazla bilgi için bkz . SCH_USE_STRONG_CRYPTO bayrağı. değeri true , uygulamanız için güçlü şifrelemeyi devre dışı bırakır. Bu anahtar yalnızca uygulamanızdaki istemci (giden) bağlantılarını etkiler.

Uygulamanız .NET Framework 4.6.2 veya sonraki sürümleri hedeflediyse, bu anahtar varsayılan olarak olur false. Bu, güvenli bir varsayılan değerdir ve bunu öneririz. Uygulamanız .NET Framework 4.6.2 üzerinde çalışıyorsa ancak önceki bir sürümü hedeflediyse, anahtar varsayılan olarak olur true. Bu durumda, bunu açıkça olarak falseolarak ayarlamanız gerekir.

DontEnableSchUseStrongCrypto yalnızca true güçlü şifrelemeyi desteklemeyen ve yükseltilmeyen eski hizmetlere bağlanmanız gerekiyorsa değeri olmalıdır.

Switch.System.Net.DontEnableSystemDefaultTlsVersions

değeri, Switch.System.Net.DontEnableSystemDefaultTlsVersions uygulamanızın false işletim sisteminin protokolü seçmesine izin vermesine neden olur. değeri, uygulamanızın true .NET Framework tarafından seçilen protokolleri kullanmasına neden olur.

Uygulamanız .NET Framework 4.7 veya sonraki sürümleri hedeflediyse, bu anahtar varsayılan olarak olur false. Bu, önerdiğimiz güvenli bir varsayılan değerdir. Uygulamanız .NET Framework 4.7 veya sonraki sürümlerinde çalışıyorsa ancak önceki bir sürümü hedeflediyse, anahtar varsayılan olarak olur true. Bu durumda, bunu açıkça olarak falseolarak ayarlamanız gerekir.

WCF uygulamaları için

Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols

değeri, Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols uygulamanızın false sertifika kimlik bilgilerini kullanarak ileti güvenliği için içinde ServicePointManager.SecurityProtocols tanımlanan değeri kullanmasına neden olur. değeri true , TLS1.0'a kadar kullanılabilir en yüksek protokolü kullanır

.NET Framework 4.7 ve sonraki sürümleri hedefleyen uygulamalar için bu değer varsayılan olarak kullanılır false. .NET Framework 4.6.2 ve önceki sürümleri hedefleyen uygulamalar için bu değer varsayılan olarak kullanılır true.

Switch.System.ServiceModel.DontEnableSystemDefaultTlsVersions

false değeri, Switch.System.ServiceModel.DontEnableSystemDefaultTlsVersions işletim sisteminin protokolü seçmesine izin vermek için varsayılan yapılandırmayı ayarlar. değeri true varsayılan değeri tls1.2'ye kadar kullanılabilir en yüksek protokol olarak ayarlar.

.NET Framework 4.7.1 ve sonraki sürümleri hedefleyen uygulamalar için bu değer varsayılan olarak kullanılır false. .NET Framework 4.7 ve önceki sürümleri hedefleyen uygulamalar için bu değer varsayılan olarak kullanılır true.

TLS protokolleri hakkında daha fazla bilgi için bkz . Risk Azaltma: TLS Protokolleri. Anahtarlar hakkında AppContext daha fazla bilgi için bkz <AppContextSwitchOverrides> Element. .

Windows Kayıt Defteri aracılığıyla güvenliği yapılandırma

Uyarı

Kayıt defteri anahtarlarının ayarlanması sistemdeki tüm uygulamaları etkiler. Bu seçeneği yalnızca makinenin tam denetimindeyseniz ve kayıt defterindeki değişiklikleri denetleyebiliyorsanız kullanın.

Anahtarlardan birini veya her ikisini AppContext birden ayarlamak bir seçenek değilse, uygulamanızın kullandığı güvenlik protokollerini bu bölümde açıklanan Windows Kayıt Defteri anahtarlarıyla denetleyebilirsiniz. Uygulamanız .NET Framework 3.5 üzerinde çalışıyorsa veya yapılandırma dosyasını düzenleyemiyorsanız anahtarlardan birini veya ikisini AppContext birden kullanamayabilirsiniz. Kayıt defteriyle güvenliği yapılandırmak istiyorsanız, kodunuzda bir güvenlik protokolü değeri belirtmeyin; bunu yapmak kayıt defteri ayarını geçersiz kılar.

Kayıt defteri anahtarlarının adları, karşılık gelen AppContext anahtarların adlarına benzer, ancak DontEnable ada eklenmemiştir. Örneğin, AppContext anahtar DontEnableSchUseStrongCrypto SchUseStrongCrypto adlı kayıt defteri anahtarıdır.

Bu anahtarlar tüm .NET Framework sürümlerinde kullanılabilir.

Http ağı () veya TCP yuva ağı (ServicePointManager) yapıyor olmanız fark etmeksizin, aşağıda açıklanan tüm kayıt defteri anahtarları aynı etkiye sahiptirSslStream.

SchUseStrongCrypto

HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\<VERSION>: SchUseStrongCrypto Kayıt defteri girdisi DWORD türünde bir değere sahiptir. 1 değeri uygulamanızın güçlü şifreleme kullanmasına neden olur. Güçlü şifreleme daha güvenli ağ protokolleri (TLS 1.2 ve TLS 1.1) kullanır ve güvenli olmayan protokolleri engeller. 0 değeri güçlü şifrelemeyi devre dışı bırakır. Daha fazla bilgi için bkz . SCH_USE_STRONG_CRYPTO bayrağı. Bu kayıt defteri ayarı yalnızca uygulamanızdaki istemci (giden) bağlantıları etkiler.

Uygulamanız .NET Framework 4.6 veya sonraki sürümleri hedeflediyse, bu anahtar varsayılan olarak 1 değerine sahiptir. Bu, önerdiğimiz güvenli bir varsayılan değerdir. Uygulamanız .NET Framework 4.5.2 veya önceki sürümleri hedeflediyse, anahtar varsayılan olarak 0'dır. Bu durumda, değerini açıkça 1 olarak ayarlamanız gerekir.

Bu anahtar yalnızca güçlü şifrelemeyi desteklemeyen ve yükseltilmeyen eski hizmetlere bağlanmanız gerekiyorsa 0 değerine sahip olmalıdır.

SystemDefaultTlsVersions

HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\<VERSION>: SystemDefaultTlsVersions Kayıt defteri girdisi DWORD türünde bir değere sahiptir. 1 değeri uygulamanızın işletim sisteminin protokolü seçmesine izin vermesine neden olur. 0 değeri uygulamanızın .NET Framework tarafından seçilen protokolleri kullanmasına neden olur.

<VERSION> v4.0.30319 (.NET Framework 4 ve üzeri için) veya v2.0.50727 (.NET Framework 3.5 için) olmalıdır.

Uygulamanız .NET Framework 4.7 veya sonraki sürümleri hedeflediyse, bu anahtar varsayılan olarak 1 değerini kullanır. Bu, önerdiğimiz güvenli bir varsayılan değerdir. Uygulamanız .NET Framework 4.6.1 veya önceki sürümleri hedeflediyse, anahtar varsayılan olarak 0'dır. Bu durumda, değerini açıkça 1 olarak ayarlamanız gerekir.

Daha fazla bilgi için bkz . Windows 10 Sürüm 1511 ve Windows Server 2016 Technical Preview 4: 10 Mayıs 2016 toplu güncelleştirmesi.

.NET Framework 3.5.1 hakkında daha fazla bilgi için bkz . Windows 7 SP1 ve Server 2008 R2 SP1 üzerinde .NET Framework 3.5.1'de bulunan TLS Sistem Varsayılan Sürümleri desteği.

Aşağıdaki . REG dosyası, kayıt defteri girdilerini ve bunların değişkenlerini en güvenli değerlerine ayarlar:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

Windows Kayıt Defteri'nde Schannel protokollerini yapılandırma

İstemci ve/veya sunucu uygulamanızın anlaşma yaptığı protokoller üzerinde ayrıntılı denetim için kayıt defterini kullanabilirsiniz. Uygulamanızın ağı Schannel üzerinden gider (Güvenli Kanal için başka bir addır). yapılandırarak Schanneluygulamanızın davranışını yapılandırabilirsiniz.

Kayıt defteri anahtarıyla HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols başlayın. Bu anahtarın altında, TLS 1.3kümesinde TLS 1.2herhangi bir alt anahtar oluşturabilirsiniz. Bu alt anahtarların her biri altında ve/veya Serveralt anahtarları Client oluşturabilirsiniz. ve altında Client DWORD değerleri DisabledByDefault (0 veya 1) ve Enabled (0 veya 1) oluşturabilirsinizServer.

Daha fazla bilgi için bkz. TLS Kayıt Defteri Ayarlar - Schannel

SCH_USE_STRONG_CRYPTO bayrağı

Etkinleştirildiğinde (varsayılan olarak, bir anahtar veya Windows Kayıt Defteri tarafından), uygulamanız bir sunucuya SCH_USE_STRONG_CRYPTO TLS bağlantısı başlattığında .NET Framework bayrağını kullanır.AppContext .NET Framework, daha iyi birlikte çalışabilirlik için aksi takdirde etkinleştirilebilen bilinen zayıf şifreleme algoritmalarını, şifreleme paketlerini ve TLS/SSL protokolü sürümlerini devre dışı bırakmasını bildirmek için bayrağını Schannel iletir. Daha fazla bilgi için bkz.

veya öğesinin SCH_USE_STRONG_CRYPTO veya numaralandırılmış değerlerini SslProtocolsSecurityProtocolType açıkça kullandığınızda Tls11 istemci (giden) bağlantıları için bayrağı da geçirilir SchannelTls12. SCH_USE_STRONG_CRYPTO Bayrağı yalnızca uygulamanızın istemcinin rolünü üstlendiği bağlantılar için kullanılır. Uygulamalarınız sunucu rolünü üstlendiğinde makine genelinde Schannel kayıt defteri ayarlarını yapılandırarak zayıf protokolleri ve algoritmaları devre dışı bırakabilirsiniz.