Annuaire d'articles
  1. 1. Première solution :
  2. 2. Solution 2
    1. 2.1. correctif de mise à jour
    2. 2.2. Définir la valeur par défaut
    3. 2.3. Système de vérification
  3. 3. Troisième solution
  4. 4. Autre contenu de référence

Description : Demande abandonnée : échec de la création du canal sécurisé SSL/TLS. Impossible de créer un canal sécurisé SSL/TLS.

Plateformes de build : Windows Server 2012, Windows 7 Service Pack 1 (SP1) et Windows Server 2008 R2 SP1

Première solution :

Définir le code avant HttpWebRequest

ServicePointManager.Expect100Continue = true;

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;

ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;

Solution 2

  • Si la méthode ci-dessus ne fonctionne pas, il s'agit d'un problème au niveau du système. Mettez à jour le correctif système en fonction du système que vous utilisez actuellement.

Mise à jour pour activer TLS 1.1 et TLS 1.2 comme protocoles de sécurité par défaut dans WinHTTP sous Windows. Cette mise à jour fournit la prise en charge de Transport Layer Security (TLS) dans Windows Server 2012, Windows 7 Service Pack 1 (SP1) et Windows Server 2008 R2 SP1 1.1. et prise en charge de TLS 1.2, veuillez vous référer à la documentation officiellehttps://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi

correctif de mise à jour

Définir la valeur par défaut

  • Activez TLS 1.1 et 1.2 sur Windows 7 au niveau du composant SChannel (adoptez l'une des mises à jour 2.1 ou 2.2 ci-dessous)

2.1. Microsoft installe et met à jour le registre :http://download.microsoft.com/download/0/6/5/0658B1A7-6D2E-474F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi

2.2 Mettez à jour manuellement le registre, copiez le code de registre suivant et importez-le dans le registre. Créez un nouveau txt, changez le suffixe txt en reg (clé de registre) et importez (faites une sauvegarde avant d'importer)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp]
"DefaultSecureProtocols"=dword:00000800

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001

[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

Système de vérification

  • Vérifiez si le système prend en charge TLS1.2, TLS1.3

PowerShell s'ouvre :

Net.ServicePointManager::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12

Troisième solution

  • Aucune des deux méthodes précédentes ne fonctionnera. Vous ne pouvez utiliser que la méthode ultime pour mettre à niveau le système vers Windows 10.

Autre contenu de référence

https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/

Des solutions existent, mais elles dépendent de la version du framework :

.NET 4.6 et supérieur. Vous n'avez pas besoin d'effectuer de travail supplémentaire pour prendre en charge TLS 1.2, il est pris en charge par défaut.

.NET 4.5. TLS 1.2 est pris en charge, mais ce n'est pas le protocole par défaut. Vous devez choisir de l'utiliser. Le code suivant définit TLS 1.2 par défaut, assurez-vous de l'exécuter avant de vous connecter à une ressource sécurisée :
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

.NET 4.0. TLS 1.2 n'est pas pris en charge, mais si .NET 4.5 (ou supérieur) est installé sur votre système, vous avez toujours la possibilité d'utiliser TLS 1.2 même si votre infrastructure d'application ne prend pas en charge TLS 1.2. Le seul problème est que SecurityProtocolType dans .NET 4.0 n'a pas d'entrée pour TLS1.2, nous devons donc utiliser la représentation numérique de cette valeur d'énumération :
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;

.NET 3.5 ou version antérieure. TLS 1.2(*) n'est pas pris en charge et il n'existe aucune solution de contournement. Mettez à niveau votre application vers la dernière version du framework.

PS Pour le scénario 3, il existe également un hack de registre qui forcera 4.5 à utiliser TLS 1.2 par défaut sans avoir à le forcer par programme.
PPS Comme Christian Pop de Microsoft le mentionne ci-dessous, un dernier correctif est disponible pour .NET 3.5 qui permet la prise en charge de TLS1.2.
Voir:
KB3154518 – Correctif cumulatif de fiabilité HR-1605 – NDP 2.0 SP2 – Win7 SP1/Win 2008 R2 SP1
KB3154519 – Correctif cumulatif de fiabilité HR-1605 – NDP 2.0 SP2 – Win8 RTM/Win 2012 RTM
KB3154520 – Correctif cumulatif de fiabilité HR-1605 – NDP 2.0 SP2 – Win8.1RTM/Win 2012 R2 RTM
KB3156421 -1605 HotFix Rollup through Windows Update for Windows 10.

Annuaire d'articles
  1. 1. Première solution :
  2. 2. Solution 2
    1. 2.1. correctif de mise à jour
    2. 2.2. Définir la valeur par défaut
    3. 2.3. Système de vérification
  3. 3. Troisième solution
  4. 4. Autre contenu de référence