J'ai un serveur Windows 2008 R2 R2 exécutant une douzaine d'applications WebForms .NET Framework 4.0 et je dois désactiver TLS 1.0 et versions antérieures. Lorsque je le fais, toutes les connexions sécurisées échouent et je devais réactiver TLS 1.0. Est-il possible d'utiliser TLS 1.2 dans un environnement Framework 4.0? Peut-être me manque quelque chose?
De plus, en raison des limitations de la version du CMS que nous utilisons, nous ne pouvons pas mettre à niveau l'infrastructure pour le moment.
Le seul moyen que j'ai trouvé pour changer cela est directement sur le code:
au tout début de votre application, vous définissez
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
vous devriez inclure la classe system.net
Je l'ai fait avant d'appeler un service Web, car nous devions également bloquer TLS1.
Si vous ne pouvez pas ajouter une propriété à la bibliothèque de classes system.net
.
Ensuite, ajoutez dans Global.asax fichier:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; //TLS 1.2
ServicePointManager.SecurityProtocol = (SecurityProtocolType)768; //TLS 1.1
Et vous pouvez l'utiliser dans une fonction, à la ligne de départ:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)768 | (SecurityProtocolType)3072;
Et cela est utile pour la passerelle de paiement STRIPE
, qui ne prend en charge que TLS 1.1, TLS 1.2.
EDIT: Après tant de questions sur .NET 4.5 est installé ou non sur mon serveur ... voici la capture d'écran de Registry
sur mon serveur de production:
J'ai uniquement .NET Framework 4.0 installé.
Apportez les modifications suivantes dans votre registre et cela devrait fonctionner:
1.) Cryptographie forte .NET Framework clés de registre
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
2.) Canal sécurisé (Schannel) TLS 1.2 clés de registre
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
Selon this , vous aurez besoin de .NET 4.5 installé. Pour plus de détails, visitez la page Web. En résumé, après avoir installé .NET 4.5, vos applications 4.0 utiliseront le 4.5 System.dll. Vous pouvez activer TLS 1.2 de deux manières:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319: SchUseStrongCrypto
sur DWORD 1
Je code dans VB et j'ai pu ajouter la ligne suivante à mon fichier Global.asax.vb dans Application_Start
ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType) 'TLS 1.2
Je rencontre le même problème sur un Windows installé .NET Framework 4.0.
Et j'ai résolu ce problème en installant .NET Framework 4.6.2 .
Ou vous pouvez télécharger le le plus récent paquet pour essayer.