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
[épisode] téléchargement du site Web Il s'agit d'un outil de téléchargement complet du site. Entrez l'URL à télécharger en un seul clic. Il est simple et facile à utiliser et comporte des tâches multithread.
Définir le code avant HttpWebRequest
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
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 officielle https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
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)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] "DefaultSecureProtocols"=dword:00000a00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] "SecureProtocols"=dword:00000a80
[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
PowerShell s'ouvre :
[Net.ServicePointManager]::SecurityProtocol [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
La première ligne de code vérifie la version TLS prise en charge. La deuxième ligne de code modifie la prise en charge de TLS.
Aucune des deux méthodes précédentes ne fonctionnera, vous ne pouvez donc utiliser que la méthode ultime :
Remarque : Pour les versions TSL spécifiques prises en charge par chaque version de Windows, veuillez vous référer aux informations supplémentaires contenues dans cet article.
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:
Peut-être que la longueur de la clé de certificat fournie par le site Web est de 512 bits et que, selon les normes actuelles de l'industrie, elle devrait contenir une clé publique d'au moins 2 048 bits. La mise à jour de sécurité de Microsoft de septembre 2016 a répondu à ce problème en déclarant que si la longueur de la clé publique est inférieure à 2 048 octets (par exemple RSA 512),Windows peut annuler les connexions HTTPS
2012 R2 and Windows 8
2008 R2 and Windows 7
SecurityProtocolType.Tls1.0=0xC0; SecurityProtocolType.Tls1.1=0x300; SecurityProtocolType.Tls1.2=0xC00;
Valeur par défaut .net 4.0/4.5 : SecurityProtocolType.Tls | SecurityProtocolType.Ssl3 Valeur par défaut .net 4.6/4.7 : SecurityProtocolType.Tls |
SCH_USE_STRONG_CRYPTO Cet indicateur sera utilisé automatiquement dans .NET Framework 4.6 https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-net-framework Dans Win7Sp1 et .Net 3.5.1, TLS1.2 est pris en charge
ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3; //Fermer ssl3 ServicePointManager.SecurityProtocol |= (SecurityProtocolType)0x300 | (SecurityProtocolType)0xc00 //Ajouter la prise en charge de 1.1 et 1.2;
La conclusion de TLS1.2 est la suivante :
Modification du registre sous .net4
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
Cet article est écrit partéléchargement du site WebRecueilli et organisé, le contenu provient d'Internet, merci d'indiquer la source lors de la réimpression, merci.