web-dev-qa-db-fra.com

TLS 1.2 dans .NET Framework 4.0

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.

51
betagreg

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.

27
Mike

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é.

registry

65
Vikrant

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
43
Aditya Landge

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:

  • Au début de l'application, ajoutez ce code: ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
  • Définissez la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319: SchUseStrongCrypto sur DWORD 1
21
BrainStorm.exe

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
4
user2721607

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.

0
Krain Chen