Symptômes
Supposons que vous avez mis à niveau vers Microsoft.NET Framework 4.6 sur votre ordinateur. Lorsque vous utilisez une application qui utilise SSL 3.0 avec ServicePointManager ou SslStream API pour se connecter à un serveur, la connexion échoue.
Cause
Ce problème se produit car l’ensemble par défaut des protocoles SSL/TLS est utilisé par ServicePointManager et SslStream a été modifié.
Ancienne valeur : Ssl 3.0 | TLS 1.0 | TLS 1.1
Nouvelle valeur : Tls 1.0 | TLS 1.1 | TLS 1.2
Solution de contournement
Pour contourner ce problème, mettez à jour le serveur Tls 1.0, Tls 1.1 ou Tls 1.2 car SSL 3.0 a été indiqué comme non sécurisé et vulnérable aux attaques de caniche.
Remarque Si vous ne pouvez pas mettre à jour le serveur, utilisez AppContext classe refuser cette fonctionnalité. Pour ce faire, utilisez une des méthodes suivantes :
-
Par programme : Doit être la première action de l’application car ServicePointManager s’initialise une seule fois. Utilisez le code suivant dans votre application :
private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
AppContext.SetSwitch(DisableCachingName, true);
AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true); -
En utilisant le fichier AppConfig pour votre application : ajoutez la ligne suivante au fichier Appconfig :
< AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/ >
Pour plus d’informations sur les problèmes connus dans la 4.6 du.NET Framework, consultez problèmes de la 4.6 de.NET Framework.
Plus d'informations
Pour plus d’informations sur les modifications de contrôle de version de produit et de l’impact dans le 4.6 de.NET Framework, consultez Compatibilité des applications dans le 4.6 de.NET Framework.
Remarques
-
La nouvelle configuration s’applique uniquement lorsque le 4.6 de.NET Framework ciblée par l’application. Le.NET Framework 4.5.2 et les versions antérieures ne pas être affectées même si elles s’exécutent dans un environnement.NET Framework 4.6.
-
Liste des API de niveau supérieur affectés :
-
HttpClient, HttpWebRequest
-
FtpClient
-
SmtpClient
-
SslStream
-
-
SCH_USE_STRONG_CRYPTO Cet indicateur doit être automatiquement utilisé dans le 4.6 de.NET Framework et affecte le comportement en supprimant des algorithmes de hachage et de chiffrement non sécurisés. Pour toutes les plates-formes de système d’exploitation Windows 10, au plus tôt l’algorithme RC4 sera supprimée à partir de l’utilisation. À partir de Windows 10, les algorithmes unsafe supplémentaires suivants seront supprimés : DES, NULL, l’exportation et MD5