Azaltma: TLS Protokolleri

.NET Framework 4.6'dan System.Net.ServicePointManager başlayarak ve System.Net.Security.SslStream sınıflarının şu üç protokolden birini kullanmasına izin verilir: Tls1.0, Tls1.1 veya Tls 1.2. SSL3.0 protokolü ve RC4 şifrelemesi desteklenmez.

Etki

Bu değişiklik şunu etkiler:

  • Aşağıdaki türlerden herhangi birini kullanarak bir HTTPS sunucusuyla veya yuva sunucusuyla konuşmak için SSL kullanan tüm uygulamalar: HttpClient, HttpWebRequest, FtpWebRequest, SmtpClientve SslStream.

  • Tls1.0, Tls1.1 veya Tls 1.2 desteğine yükseltilemeyen herhangi bir sunucu tarafı uygulaması..

Risk azaltma

Önerilen azaltma, sunucu tarafı uygulamasını Tls1.0, Tls1.1 veya Tls 1.2'ye yükseltmektir. Bu uygun değilse veya istemci uygulamaları bozuksa, AppContext sınıfı bu özelliği iki yoldan biriyle geri çevirmek için kullanılabilir:

  • Program aracılığıyla, aşağıdaki gibi bir kod parçacığı kullanarak:

    const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching";
    const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
    AppContext.SetSwitch(DisableCachingName, true);
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);
    
    Const DisableCachingName As String = "TestSwitch.LocalAppContext.DisableCaching"
    Const DontEnableSchUseStrongCryptoName As String = "Switch.System.Net.DontEnableSchUseStrongCrypto"
    AppContext.SetSwitch(DisableCachingName, True)
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, True)
    

    Nesne yalnızca bir kez başlatıldığından ServicePointManager , uygulamanın ilk yaptığı şey bu uyumluluk ayarlarını tanımlamak olmalıdır.

  • app.config dosyanızın çalışma zamanı> bölümüne aşağıdaki satırı <ekleyerek:

    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>  
    

Ancak, uygulamayı daha az güvenli hale getirdiğinden varsayılan davranışı geri çevirmenin önerilmez.

Ayrıca bkz.