Syyt ja ratkaisut kysymykseen "Pyyntö keskeytettiin ja SSL/TLS-suojatun kanavan luominen epäonnistui"
Kuvaus: Pyyntö keskeytetty: SSL/TLS-suojatun kanavan luominen epäonnistui. Suojattua SSL/TLS-kanavaa ei voitu luoda.
Rakenna alustat: Windows Server 2012, Windows 7 Service Pack 1 (SP1) ja Windows Server 2008 R2 SP1
Ratkaisu yksi:
Aseta koodi ennen HttpWebRequestiä
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
Ratkaisu 2
- Jos yllä oleva menetelmä ei toimi, se on järjestelmätason ongelma. Päivitä järjestelmäkorjaus tällä hetkellä käyttämäsi järjestelmän mukaan.
Päivitys ottaa TLS 1.1 ja TLS 1.2 käyttöön Windowsin WinHTTP:n oletussuojausprotokollana. Tämä päivitys tukee Transport Layer Security (TLS) -suojausta Windows Server 2012:ssa, Windows 7 Service Pack 1:ssä (SP1) ja Windows Server 2008 R2 SP1 1.1:ssä. ja TLS 1.2 -tuki, katso virallinen dokumentaatiohttps://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
päivitä korjaustiedosto
Aseta oletusarvo
- Ota TLS 1.1 ja 1.2 käyttöön Windows 7:ssä SChannel-komponenttitasolla (ota käyttöön jokin alla olevista 2.1- tai 2.2-päivityksistä)
2.1 Microsoft asentaa ja päivittää rekisterin:http://download.microsoft.com/download/0/6/5/0658B1A7-6D2E-474F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi
2.2 Päivitä rekisteri manuaalisesti, kopioi seuraava rekisterikoodi ja tuo se rekisteriin. Luo uusi txt, muuta pääte txt muotoon reg (rekisteriavain) ja tuo (tee varmuuskopio ennen tuontia)
1 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] |
Varmistusjärjestelmä
- Tarkista, tukeeko järjestelmä TLS1.2, TLS1.3
PowerShell avautuu:
Net.ServicePointManager::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
Ratkaisu kolme
- Kumpikaan edellisistä kahdesta menetelmästä ei toimi. Voit käyttää vain parasta menetelmää päivittääksesi järjestelmän Windows 10:een.
Muu viitesisältö
https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/
Ratkaisuja on olemassa, mutta ne riippuvat kehysversiosta:
.NET 4.6 ja uudemmat. Sinun ei tarvitse tehdä mitään ylimääräistä työtä tukeaksesi TLS 1.2:ta, se on oletuksena tuettu.
.NET 4.5. TLS 1.2 on tuettu, mutta se ei ole oletusprotokolla. Sinun on valittava sen käyttö. Seuraava koodi asettaa TLS 1.2:n oletusarvoksi. Muista suorittaa se ennen yhteyden muodostamista suojattuun resurssiin:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.NET 4.0. TLS 1.2:ta ei tueta, mutta jos järjestelmääsi on asennettu .NET 4.5 (tai uudempi), voit silti käyttää TLS 1.2:ta, vaikka sovelluskehys ei tuekaan TLS 1.2:ta. Ainoa ongelma on, että .NET 4.0:n SecurityProtocolType ei sisällä TLS1.2:ta, joten meidän on käytettävä tämän enum-arvon numeerista esitystä:
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;
.NET 3.5 tai vanhempi. TLS 1.2(*) ei ole tuettu, eikä siihen ole ratkaisua. Päivitä sovelluksesi kehyksen uusimpaan versioon.
PS Skenaariossa 3 on myös rekisterihakkerointi, joka pakottaa 4.5:n käyttämään TLS 1.2:ta oletuksena ilman, että sitä tarvitsee pakottaa ohjelmallisesti.
PPS Kuten Microsoftin Christian Pop mainitsee alla, .NET 3.5:lle on saatavilla uusin korjaustiedosto, joka mahdollistaa TLS1.2-tuen.
Katso:
KB3154518 – Luotettavuuskokoelma HR-1605 – NDP 2.0 SP2 – Win7 SP1/Win 2008 R2 SP1
KB3154519 – Luotettavuuskokoelma HR-1605 – NDP 2.0 SP2 – Win8 RTM/Win 2012 RTM
KB3154520 – Luotettavuuskokoelma HR-1605 – NDP 2.0 SP2 – Win8.1RTM/Win 2012 R2 RTM
KB3156421 -1605 HotFix Rollup through Windows Update for Windows 10.