Risicobeperking: TLS-protocollen
Vanaf .NET Framework 4.6 mogen de System.Net.ServicePointManager en System.Net.Security.SslStream klassen een van de volgende drie protocollen gebruiken: Tls1.0, Tls1.1 of Tls 1.2. Het SSL3.0-protocol en RC4-codering worden niet ondersteund.
Impact
Deze wijziging is van invloed op:
Elke app die gebruikmaakt van SSL om te communiceren met een HTTPS-server of een socketserver met een van de volgende typen: , , , en SslStreamSmtpClient. FtpWebRequestHttpWebRequestHttpClient
Elke app aan de serverzijde die niet kan worden bijgewerkt ter ondersteuning van Tls1.0, Tls1.1 of Tls 1.2..
Oplossing
De aanbevolen oplossing is om de server-side-app te upgraden naar Tls1.0, Tls1.1 of Tls 1.2. Als dit niet haalbaar is of als client-apps zijn verbroken, kan de AppContext klasse worden gebruikt om deze functie op twee manieren uit te schakelen:
Programmatisch, met behulp van een codefragment als volgt:
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)
Omdat het object slechts eenmaal wordt geïnitialiseerd, moet het ServicePointManager definiëren van deze compatibiliteitsinstellingen het eerste zijn dat de toepassing doet.
Door de volgende regel toe te voegen aan de <runtimesectie> van uw app.config-bestand:
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>
Houd er echter rekening mee dat het afmelden van het standaardgedrag niet wordt aanbevolen, omdat de toepassing hierdoor minder veilig wordt.