Апісанне: Запыт спынены: не ўдалося стварыць бяспечны канал SSL/TLS. Немагчыма стварыць бяспечны канал SSL/TLS. Платформы зборкі: Windows Server 2012, Windows 7 Service Pack 1 (SP1) і Windows Server 2008 R2 SP1
[эпізод] загрузка сайта Гэта інструмент загрузкі ўсяго сайта, каб загрузіць яго адным пстрычкай мышы. Ён просты ў выкарыстанні і мае шматструменныя задачы.
Усталюйце код перад HttpWebRequest
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
Калі апісаны вышэй метад не працуе, гэта праблема сістэмнага ўзроўню, абнавіце патч сістэмы ў адпаведнасці з сістэмай, якой вы зараз карыстаецеся.
Абнаўленне для ўключэння TLS 1.1 і TLS 1.2 у якасці пратаколаў бяспекі па змаўчанні ў WinHTTP у Windows, гэта абнаўленне забяспечвае падтрымку бяспекі транспартнага ўзроўню (TLS) у Windows Server 2012, Windows 7 з пакетам абнаўлення 1 (SP1) і Windows Server 2008 R2 SP1 1.1 і падтрымку TLS 1.2, звярніцеся да афіцыйнай дакументацыі https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
Скапіруйце наступны код рэестра і імпартуйце яго ў рэестр. Стварыце новы тэкставы файл, змяніце суфікс txt на reg (ключ рэестра) і імпартуйце (перад імпартам зрабіце рэзервовую копію)
[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:
[Net.ServicePointManager]::SecurityProtocol [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
Першы радок кода правярае падтрымліваемую версію TLS.
Ні адзін з папярэдніх двух метадаў не будзе працаваць, таму вы можаце выкарыстоўваць толькі канчатковы метад:
Заўвага: для канкрэтных версій TSL, якія падтрымліваюцца кожнай версіяй Windows, звярніцеся да дадатковай інфармацыі ў гэтым артыкуле.
Рашэнні існуюць, але яны залежаць ад версіі фрэймворка:
.NET 4.6 і вышэй. Для падтрымкі TLS 1.2 вам не трэба рабіць ніякіх дадатковых работ, ён падтрымліваецца па змаўчанні.
.NET 4.5. TLS 1.2 падтрымліваецца, але гэта не пратакол па змаўчанні. Вы павінны выбраць, каб выкарыстоўваць яго. Наступны код усталёўвае TLS 1.2 па змаўчанні, не забудзьцеся выканаць яго перад падключэннем да бяспечнага рэсурсу:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.NET 4.0. TLS 1.2 не падтрымліваецца, але калі ў вашай сістэме ўсталяваны .NET 4.5 (або вышэй), у вас усё яшчэ ёсць магчымасць выкарыстоўваць TLS 1.2, нават калі ваша праграма не падтрымлівае TLS 1.2. Адзіная праблема ў тым, што SecurityProtocolType у .NET 4.0 не мае запісу для TLS1.2, таму мы павінны выкарыстоўваць лікавае прадстаўленне гэтага значэння пераліку:
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;
.NET 3.5 або ніжэй. TLS 1.2(*) не падтрымліваецца, і абыходнага шляху няма. Абнавіце сваю праграму да апошняй версіі фрэймворка.
PS Для сцэнарыя 3 існуе таксама ўзлом рэестра, які прымусіць 4.5 выкарыстоўваць TLS 1.2 па змаўчанні без неабходнасці праграмнага прымусу. PPS Як адзначае ніжэй Крысціян Поп ад Microsoft, для .NET 3.5 даступны апошні патч, які падтрымлівае TLS1.2.
Глядзіце:
Магчыма, даўжыня ключа сертыфіката, прадстаўленая вэб-сайтам, складае 512 біт, і ў адпаведнасці з дзеючымі галіновымі стандартамі ён павінен утрымліваць адкрыты ключ не менш за 2048 біт. Абнаўленне сістэмы бяспекі Microsoft ад верасня 2016 г. адказала на гэтую праблему, заявіўшы, што калі даўжыня адкрытага ключа менш за 2048 байт (напрыклад, RSA 512),Windows можа адмяняць злучэнні HTTPS
2012 R2 and Windows 8
2008 R2 and Windows 7
SecurityProtocolType.Tls1.0=0xC0; SecurityProtocolType.Tls1.1=0x300; SecurityProtocolType.Tls1.2=0xC00;
.net 4.0/4.5 значэнне па змаўчанні: SecurityProtocolType.Ssl3 .net 4.6/4.7 значэнне па змаўчанні: SecurityProtocolType.Tls11 |
SCH_USE_STRONG_CRYPTO Гэты сцяг будзе аўтаматычна выкарыстоўвацца ў .NET Framework 4.6 https://support.microsoft.com/en-us/help/3154518/support-for-tls-system-default-versions-included-in-the-net-framework У Win7Sp1 і .Net 3.5.1 падтрымліваецца TLS1.2
ServicePointManager.SecurityProtocol &= ~SecurityProtocolType.Ssl3; //Дадаць падтрымку для 1.1 і 1.2
Выснова TLS1.2 такая:
Мадыфікацыя рэестра пад .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
Гэты артыкул напісанызагрузка сайтаСабрана і ўпарадкавана, змест паходзіць з Інтэрнэту, калі ласка, указвайце крыніцу пры перадруку, дзякуй.