Existe-t-il une implémentation .NET de TLS 1.2?

Puisque je viens de découvrir que la RFC 5425 nécessite l’utilisation de TLS 1.2 et que .NET ne le prend pas encore en charge, je me demande s’il existe une implémentation, éventuellement open source, du protocole TLS 1.2, telle que définie dans la RFC 5246.

Je vous remercie.

Je viens de découvrir que .Net Framework 4.5 prend maintenant en charge TLSv1.2
http://msdn.microsoft.com/en-us/library/system.security.authentication.sslprotocols(v=vs.110).aspx

Oui, bien que vous deviez activer manuellement TLS 1.2 sur System.Net.ServicePointManager.SecurityProtocol

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; // comparable to modern browsers var response = WebRequest.Create("https://www.howsmyssl.com/").GetResponse(); var body = new StreamReader(response.GetResponseStream()).ReadToEnd(); 

Votre client utilise TLS 1.2, la version la plus moderne du protocole de chiffrement


WebRequest utilisera TLS 1.0 ou SSL 3 .

Votre client utilise TLS 1.0, qui est très ancien, susceptible d’être attaqué par BEAST, et ne dispose pas des meilleures suites de chiffrement. Des ajouts comme AES-GCM et SHA256 pour remplacer MD5-SHA-1 ne sont pas disponibles pour un client TLS 1.0, ainsi que pour de nombreuses suites de chiffrement plus modernes.

Vous pouvez utiliser le paramètre de Registre SchUseStrongCrypto pour exiger que toutes les applications .NET utilisent TLS 1.2 au lieu de 1.0 par défaut.

 Windows Registry Editor Version 5.00 [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 

J’ai corrigé mon problème en passant au dernier .Net Framework. Ainsi, votre Framework cible définit votre protocole de sécurité.

quand vous avez ceci dans Web.config

    

vous l’aurez par défaut:

 ServicePointManager.SecurityProtocol = Ssl3 | Tls 

quand vous avez ceci dans Web.config

    

vous l’aurez par défaut:

 ServicePointManager.SecurityProtocol = Tls12 | Tls11 | Tls 

Si vous utilisez des versions plus anciennes de .NET Framework, la prise en charge de TLS 1.2 est disponible dans notre produit SecureBlackbox, à la fois dans les composants client et serveur. SecureBlackbox contient sa propre implémentation de tous les algorithmes, donc peu importe la version de framework basée sur .NET que vous utilisez (y compris .NET CF) – vous aurez TLS 1.2 avec les dernières additions dans tous les cas.

Veuillez noter que SecureBlackbox n’appenda pas comme par magie TLS 1.2 aux classes d’infrastructure – au lieu de cela, vous devez utiliser explicitement les classes et les composants SecureBlackbox.

Il suffit de télécharger cette clé de registre et de l’exécuter. Il appenda la clé nécessaire au registre du framework .NET. Vous pouvez avoir plus d’infos sur ce lien . Recherchez “Option 2” dans “.NET 4.5 à 4.5.2”.

Le fichier reg ajoute les éléments suivants au 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 

C’est la partie de la page qui est utile en cas de rupture:

“.. activer TLS 1.2 par défaut sans modifier le code source en définissant la valeur DWORD SchUseStrongCrypto dans les deux clés de Registre suivantes à 1, en les créant si elles n’existent pas:” HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ v4.0.30319 ” et “HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v4.0.30319″. Bien que le numéro de version dans ces clés de Registre soit 4.0.30319, les frameworks .NET 4.5, 4.5.1 et 4.5.2 utilisent également ces valeurs. Les clés de registre, cependant, activent TLS 1.2 par défaut dans toutes les applications .NET 4.0, 4.5, 4.5.1 et 4.5.2 installées sur ce système.Il est donc conseillé de tester cette modification avant de la déployer sur vos serveurs de production. est également disponible en tant que fichier d’importation de registre.Ces valeurs de registre n’affecteront toutefois pas les applications .NET qui définissent la valeur System.Net.ServicePointManager.SecurityProtocol. ”

La dernière version de SSPI (fournie avec Windows 7) a une implémentation de TLS 1.2, qui peut être trouvée dans schannel.dll

.NET Framework 4.6 utilise TLS 1.2 par défaut.

De plus, seule l’application hôte doit être dans .NET 4.6, les bibliothèques référencées peuvent restr dans les anciennes versions.

Vous pouvez activer TLS 1.2 dans IIS en suivant ces instructions . Je présume que cela serait suffisant si vous avez une application ASP.NET qui s’exécute sur IIS, même s’il semble que cela ne répond pas vraiment à vos besoins.

comme mentionné ici, vous pouvez simplement append cette ligne

 ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;