Orsaker och lösningar för "Förfrågan avbröts och det gick inte att skapa en SSL/TLS säker kanal"
Beskrivning: Begäran avbröts: Det gick inte att skapa SSL/TLS säker kanal. Det gick inte att skapa SSL/TLS säker kanal.
Byggplattformar: Windows Server 2012, Windows 7 Service Pack 1 (SP1) och Windows Server 2008 R2 SP1
Lösning ett:
Ställ in koden före HttpWebRequest
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
Lösning 2
- Om metoden ovan inte fungerar är det ett problem på systemnivå. Uppdatera systemkorrigeringen enligt det system du använder för närvarande.
Uppdatering för att aktivera TLS 1.1 och TLS 1.2 som standardsäkerhetsprotokoll i WinHTTP i Windows, den här uppdateringen ger stöd för Transport Layer Security (TLS) i Windows Server 2012, Windows 7 Service Pack 1 (SP1) och Windows Server 2008 R2 SP1 1.1 och TLS 1.2 support, se den officiella dokumentationenhttps://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
uppdatera patch
Ställ in standardvärde
- Aktivera TLS 1.1 och 1.2 på Windows 7 på SChannel-komponentnivå (använd en av 2.1- eller 2.2-uppdateringarna nedan)
2.1 Microsoft installerar och uppdaterar registret:http://download.microsoft.com/download/0/6/5/0658B1A7-6D2E-474F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi
2.2 Uppdatera registret manuellt, kopiera följande registerkod och importera det till registret. Skapa en ny txt, ändra suffixet txt till reg (registernyckel) och importera (gör en säkerhetskopia innan du importerar)
1 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] |
Verifieringssystem
- Kontrollera om systemet stöder TLS1.2, TLS1.3
PowerShell öppnas:
Net.ServicePointManager::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
Lösning tre
- Ingen av de två föregående metoderna fungerar Du kan bara använda den ultimata metoden för att uppgradera systemet till Windows 10.
Annat referensinnehåll
https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/
Lösningar finns, men de beror på ramversionen:
.NET 4.6 och senare. Du behöver inte göra något extra arbete för att stödja TLS 1.2, det stöds som standard.
.NET 4.5. TLS 1.2 stöds, men det är inte standardprotokollet. Du måste välja att använda den. Följande kod ställer in TLS 1.2 som standard, se till att köra den innan du ansluter till en säker resurs:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.NET 4.0. TLS 1.2 stöds inte, men om .NET 4.5 (eller högre) är installerat på ditt system har du fortfarande möjlighet att använda TLS 1.2 även om ditt applikationsramverk inte stöder TLS 1.2. Det enda problemet är att SecurityProtocolType i .NET 4.0 inte har någon post för TLS1.2, så vi måste använda den numeriska representationen av detta enumvärde:
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;
.NET 3.5 eller lägre. TLS 1.2(*) stöds inte och det finns ingen lösning. Uppgradera din applikation till den senaste versionen av ramverket.
PS För scenario 3 finns det också ett registerhack som tvingar 4.5 att använda TLS 1.2 som standard utan att behöva tvinga det programmatiskt.
PPS Som Microsofts Christian Pop nämner nedan finns det en senaste patch tillgänglig för .NET 3.5 som möjliggör TLS1.2-stöd.
Ser:
KB3154518 – Tillförlitlighetssamlad HR-1605 – NDP 2.0 SP2 – Win7 SP1/Win 2008 R2 SP1
KB3154519 – Tillförlitlighetssamlad HR-1605 – NDP 2.0 SP2 – Win8 RTM/Win 2012 RTM
KB3154520 – Tillförlitlighetssamlad HR-1605 – NDP 2.0 SP2 – Win8.1RTM/Win 2012 R2 RTM
KB3156421 -1605 HotFix Rollup through Windows Update for Windows 10.