Каталог статей
  1. 1. Решение первое:
  2. 2. Решение 2
    1. 2.1. обновить патч
    2. 2.2. Установить значение по умолчанию
    3. 2.3. Система верификации
  3. 3. Решение третье
  4. 4. Другой справочный контент

Описание: Запрос прерван: не удалось создать безопасный канал SSL/TLS. Не удалось создать безопасный канал SSL/TLS.

Платформы сборки: Windows Server 2012, Windows 7 с пакетом обновления 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;

Решение 2

  • Если описанный выше метод не работает, это проблема на уровне системы. Обновите системный патч в соответствии с системой, которую вы используете в данный момент.

Обновление для включения 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

обновить патч

Установить значение по умолчанию

  • Включите TLS 1.1 и 1.2 в Windows 7 на уровне компонента SChannel (примите одно из обновлений 2.1 или 2.2 ниже).

2.1 Microsoft устанавливает и обновляет реестр:http://download.microsoft.com/download/0/6/5/0658B1A7-6D2E-474F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi

2.2. Обновите реестр вручную, скопируйте следующий код реестра и импортируйте его в реестр. Создайте новый txt, измените суффикс txt на reg (ключ реестра) и импортируйте (перед импортом сделайте резервную копию).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[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

Система верификации

  • Проверьте, поддерживает ли система TLS1.2, TLS1.3.

PowerShell открывается:

Net.ServicePointManager::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12

Решение третье

  • Ни один из предыдущих двух методов не сработает. Для обновления системы до Windows 10 можно использовать только последний метод.

Другой справочный контент

https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/

Решения существуют, но они зависят от версии фреймворка:

.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.
Видеть:
KB3154518 — Накопительный пакет надежности HR-1605 — NDP 2.0 SP2 — Win7 SP1/Win 2008 R2 SP1
KB3154519 — Накопительный пакет надежности HR-1605 — NDP 2.0 SP2 — Win8 RTM/Win 2012 RTM
KB3154520 — Накопительный пакет надежности HR-1605 — NDP 2.0 SP2 — Win8.1RTM/Win 2012 R2 RTM
KB3156421 -1605 HotFix Rollup through Windows Update for Windows 10.

Каталог статей
  1. 1. Решение первое:
  2. 2. Решение 2
    1. 2.1. обновить патч
    2. 2.2. Установить значение по умолчанию
    3. 2.3. Система верификации
  3. 3. Решение третье
  4. 4. Другой справочный контент