Описание: Заявката е прекратена: Неуспешно създаване на SSL/TLS защитен канал. Не можа да се създаде SSL/TLS защитен канал. Платформи за изграждане: Windows Server 2012, Windows 7 Service Pack 1 (SP1) и Windows Server 2008 R2 SP1
[епизод] изтегляне на уебсайт Това е инструмент за изтегляне на целия сайт. Въведете URL адреса за изтегляне с едно кликване. Той е прост и лесен за използване и има многонишкови задачи.
Задайте код преди 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 Service Pack 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, променете суфикса 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, така че трябва да използваме цифровото представяне на тази enum стойност:
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; //Затваряне на ssl3 ServicePointManager.SecurityProtocol |= (SecurityProtocolType)0xc00;
Заключението на 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
Тази статия е написана отизтегляне на уебсайтСъбрано и организирано, съдържанието идва от Интернет, моля, посочете източника при препечатване, благодаря.