TUTOS.EU

Autoriser le TLS 1.0 sur un poste Windows

Il faut modifier une clé de registre pour cela.
Comme dit que https://learn.microsoft.com/fr-fr/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012

par défaut la clé SCHANNEL n'existe pas

Commande pour créer la clé

REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /t REG_DWORD /v Enabled /d 1 /f
Lien vers le fichier : cliquez ici Copier le code

En aparté, vous pouvez voir les cipher suites supportées sur votre poste Windows dans la partie "Protocol Features" de l'url
https://clienttest.ssllabs.com:8443/ssltest/viewMyClient.html

Le site a l'avantage de vous dire si le protocole est faible ou non.

Sur un serveur 2008 R2 SP1 non patché, on voit tout de suite si le TLS 1.2 est supporté ou non et si les protocoles sont 'weak'

Dans la base de registre, vous pouvez voir vos cipher suites dans
Ordinateur\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002\Functions

L'ordre de préférence va de haut en bas. Donc le protocole le plus faible doit être placé en bas.

Sur mon 2008 R2 SP1 non patché cela donne

Cette clé de registre doit être manageable par GPO sous Computer Configuration > Administrative Templates > Network > SSL Configuration Settings.

Voir Configuring TLS Cipher Suite Order by using Group Policy sur le sujet.

 

Pour TLS 1.2 (et non TLS 1.0), pour qu'il soit activable, il faut qu'il soit installé sur le serveur.

Par exemple sur un serveur 2008 R2 SP1, il faut mettre la KB3140245 et éventuellement la KB3020369 et KB3042058.

 

Vous pouvez aussi avoir une appli qui utilise un vieux framework comme le 4.5. Dans ce cas vous pouvez également être amené à faire des modifications.

Sur learn.microsoft.com (que je vous invite à lire) cela dit de configurer le paramètre SchUseStrongCrypto sur DWORD:00000001. Cette valeur désactive le chiffrement de flux RC4, permet à .NET d’utiliser TLS 1.1 et TLS 1.2 et cela demande un reboot.

Le SystemDefaultTlsVersions permet à .NET d’utiliser la configuration du système d’exploitation.

Les clés à poser seraient :

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
      "SystemDefaultTlsVersions" = dword:00000001
      "SchUseStrongCrypto" = dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
      "SystemDefaultTlsVersions" = dword:00000001
      "SchUseStrongCrypto" = dword:00000001

 

Sur ce post cela dit qu'à partir du .NET Framework 4.7 et au dessus c'est l'OS qui choisi le meilleur protocole.

 

En note, sur https://learn.microsoft.com/fr-fr/mem/configmgr/core/plan-design/security/enable-tls-1-2-client

il est dit que Windows 8.1, Windows Server 2012 R2, Windows 10, Windows Server 2016, et les versions ultérieures de Windows prennent en charge nativement TLS 1.2 pour les communications client-serveur sur WinHTTP. On peut forcer uniquement TLS 1.1 et TLS 1.2 pour les communications client-serveur sur WinHTTP par clé de registre.

Sur https://support.microsoft.com/en-us/topic/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-winhttp-in-windows-c4bd73d2-31d7-761e-0178-11268bb10392
il est dit qu'on peut activer les protocoles désirés en posant une valeur de DefaultSecureProtocols, qui n'est pas mise par défaut, sous
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
et
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp

La valeur à mettre est une addition des différentes valeurs en hexa données dans ce tableau

Ainsi si vous voulez uniquement du TLS 1.1 et du TLS 1.2
il faut ajouter en hexa 200 pour le TSL 1.1 et 800 pour le TLS 1.2 = A00

soit 2560 en décimal

On peut alors poser ces 2 clés

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp"                           /V "DefaultSecureProtocols" /T REG_DWORD /D 2560 /F
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" /V "DefaultSecureProtocols" /T REG_DWORD /D 2560 /F
Lien vers le fichier : cliquez ici Copier le code

Pour avoir uniquement du TLS 1.2 il faut mettre 800 en hexa soit 2048 en décimal

Il faut donc poser ces clés

reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp"                           /V "DefaultSecureProtocols" /T REG_DWORD /D 2048 /F
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp" /V "DefaultSecureProtocols" /T REG_DWORD /D 2048 /F
Lien vers le fichier : cliquez ici Copier le code

Toujour sur https://support.microsoft.com/en-us/topic/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-winhttp-in-windows

il est indiqué que sur Windows 7  on doit activer le TLS 1.1 and 1.2 par clé de registre avec

reg add "HKLM\SYSTEM\SOFTWARE\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /V "DisabledByDefault" /T REG_DWORD /D 0 /F
Lien vers le fichier : cliquez ici Copier le code

Pages Web

Site WebDescription
learn.microsoft.comConfigure TLS 1.2 on Windows clients

2