Przyczyny i rozwiązania „Żądanie zostało przerwane i nie można było utworzyć bezpiecznego kanału SSL/TLS”
Opis: Żądanie przerwane: utworzenie bezpiecznego kanału SSL/TLS nie powiodło się. Nie można utworzyć bezpiecznego kanału SSL/TLS.
Platformy kompilacji: Windows Server 2012, Windows 7 z dodatkiem Service Pack 1 (SP1) i Windows Server 2008 R2 SP1
Rozwiązanie pierwsze:
Ustaw kod przed HttpWebRequest
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
Rozwiązanie 2
- Jeśli powyższa metoda nie zadziała, jest to problem na poziomie systemu. Zaktualizuj poprawkę systemową zgodnie z systemem, którego aktualnie używasz.
Aktualizacja umożliwiająca włączenie TLS 1.1 i TLS 1.2 jako domyślnych protokołów zabezpieczeń w WinHTTP w systemie Windows. Ta aktualizacja zapewnia obsługę protokołu Transport Layer Security (TLS) w systemach Windows Server 2012, Windows 7 z dodatkiem Service Pack 1 (SP1) i Windows Server 2008 R2 SP1 1.1 i TLS 1.2, zapoznaj się z oficjalną dokumentacjąhttps://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
zaktualizować poprawkę
Ustaw wartość domyślną
- Włącz TLS 1.1 i 1.2 w systemie Windows 7 na poziomie komponentu SChannel (zastosuj jedną z poniższych aktualizacji 2.1 lub 2.2)
2.1. Microsoft instaluje i aktualizuje rejestr:http://download.microsoft.com/download/0/6/5/0658B1A7-6D2E-474F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi
2.2. Ręcznie zaktualizuj rejestr, skopiuj poniższy kod rejestru i zaimportuj go do rejestru. Utwórz nowy plik txt, zmień przyrostek txt na reg (klucz rejestru) i zaimportuj (wykonaj kopię zapasową przed importem)
1 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] |
System weryfikacji
- Sprawdź, czy system obsługuje TLS1.2, TLS1.3
Otwiera się PowerShell:
Net.ServicePointManager::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
Rozwiązanie trzecie
- Żadna z poprzednich dwóch metod nie zadziała. Możesz użyć tylko ostatecznej metody uaktualnienia systemu do Windows 10.
Inna treść referencyjna
https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/
Rozwiązania istnieją, ale zależą od wersji frameworka:
.NET 4.6 i nowsze wersje. Nie musisz wykonywać żadnej dodatkowej pracy, aby obsługiwać TLS 1.2, jest on obsługiwany domyślnie.
.NET 4.5. Obsługiwany jest protokół TLS 1.2, ale nie jest to protokół domyślny. Musisz zdecydować się z niego skorzystać. Poniższy kod ustawia domyślnie protokół TLS 1.2. Pamiętaj, aby go wykonać przed połączeniem się z bezpiecznym zasobem:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.NET 4.0. Protokół TLS 1.2 nie jest obsługiwany, ale jeśli w systemie jest zainstalowana platforma .NET 4.5 (lub nowsza wersja), nadal masz możliwość korzystania z protokołu TLS 1.2, nawet jeśli Twoja aplikacja nie obsługuje protokołu TLS 1.2. Jedynym problemem jest to, że SecurityProtocolType w .NET 4.0 nie ma wpisu dla TLS1.2, więc musimy użyć numerycznej reprezentacji tej wartości wyliczeniowej:
ServicePointManager.SecurityProtocol = (Typ protokołu bezpieczeństwa) 3072;
.NET 3.5 lub nowsza wersja. Protokół TLS 1.2(*) nie jest obsługiwany i nie ma żadnego obejścia. Zaktualizuj swoją aplikację do najnowszej wersji frameworka.
PS W scenariuszu 3 istnieje również hack rejestru, który wymusi domyślne używanie protokołu TLS 1.2 w wersji 4.5 bez konieczności wymuszania tego programowo.
PPS Jak wspomniał poniżej Christian Pop z Microsoftu, dostępna jest najnowsza łatka dla .NET 3.5, która umożliwia obsługę protokołu TLS1.2.
Widzieć:
KB3154518 – Pakiet zbiorczy niezawodności HR-1605 – NDP 2.0 SP2 – Win7 SP1/Win 2008 R2 SP1
KB3154519 – Pakiet zbiorczy niezawodności HR-1605 – NDP 2.0 SP2 – Win8 RTM/Win 2012 RTM
KB3154520 – Pakiet zbiorczy niezawodności HR-1605 – NDP 2.0 SP2 – Win8.1RTM/Win 2012 R2 RTM
KB3156421 -1605 HotFix Rollup through Windows Update for Windows 10.