Вызывается SSL-вызов Invoke-WebRequest?

Когда я пытаюсь использовать Invoke-WebRequest я получаю некоторую странную ошибку:

 Invoke-WebRequest -Uri "https://idp.safenames.com/" Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send. 

Я не уверен, что вызывает его, поскольку сам сайт кажется прекрасным.

Даже при всех ошибках «ignore ssl errors» вокруг stackoverflow он все еще не работает, заставляя меня задаться вопросом, связано ли это с SSL вообще.

Как отмечает BaconBits , версия .NET> 4.5 по умолчанию использует SSLv3 и TLS 1.0.

Вы можете изменить это поведение, установив политику SecurityProtocol с classом ServicePointManager :

 PS C:\> $AllProtocols = [System.Net.SecurityProtocolType]'Ssl3,Tls,Tls11,Tls12' PS C:\> [System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols PS C:\> (Invoke-WebRequest -Uri "https://idp.safenames.com/").StatusCode 200 

Это применимо ко всем запросам в AppDomain (так что это относится только к текущему экземпляру хост-приложения).


В GitHub и в PSGallery есть модуль, который теперь может управлять этими настройками:

 Install-Module BetterTls -Scope CurrentUser Import-Module BetterTls Enable-Tls -Tls11 -Tls12 

На основе этого сканирования не похоже, что URI поддерживает все, что ниже TLS 1.1.

На какой версии Windows вы работаете? Если вы используете PowerShell v4.0 или ниже, вы не сможете согласовать соединение TLS 1.1 или 1.2, потому что .Net Framework не поддерживает TLS 1.1 или 1.2 до .NET Framework 4.5. PowerShell v4.0 – .Net 4.0. Это означает, что базовые classы System.Net.WebRequest не могут согласовывать соединение. Я считаю, что PowerShell v5.0 – это .Net 4.5 или .Net 4.6, но у меня нет клиента Win 10 для проверки $PSVersionTable прямо сейчас.

Вы можете заставить его работать, закодировав вызовы в WebRequest вручную и указав протокол как [System.Net.SecurityProtocolType]::Tls12 или [System.Net.SecurityProtocolType]::Tls11 , но я не уверен, что это возможно. Это должно работать, если .NET 4.5 установлен из того, что я вижу, но, опять же, я никогда не пробовал.

Для справки я получаю то же самое, что и в Windows 7 x64 / Powershell v4.0, и у меня установлен .Net 4.5, но я никогда не пробовал вручную кодировать WebRequest. Я также получаю сообщение об ошибке, если я использую wget для Windows 1.11.4 отсюда (OpenSSL 0.9.8b, задолго до TLS 1.1 и 1.2), но он отлично работает, если я использую wget для Windows 1.17.1 отсюда (текущий, более или менее).

Это также может быть постоянно изменено

 # set strong cryptography on 32 bit .Net Framework (version 4 and above) Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord # set strong cryptography on 64 bit .Net Framework (version 4 and above) Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord 
  • «Проверьте ошибку: num = 20» при подключении к gateway.sandbox.push.apple.com
  • Почему SSLSocket Java отправляет приветствие клиента версии 2?
  • Не удалось добавить сертификат SSL при привязке к порту
  • Java SSL: как отключить проверку имени хоста
  • HTTPS с NSURLConnection - NSURLErrorServerCertificateUntrusted
  • Как загрузить файл PKCS # 12 в OpenSSL программно?
  • Как вы подписываете запрос на подпись сертификата в своем сертификационном центре?
  • Как заблокировать определенный HTTPS-трафик?
  • Как я могу использовать разные сертификаты для определенных соединений?
  • SSLHandshakeException: сообщение о нарушении не выполнено на Android N / 7.0
  • Какие Cipher Suites включить для SSL Socket?
  • Interesting Posts

    Невозможно добавить файлы / папки в Quick Access в Windows 10: «Unspecified Error»

    Вызывается: java.security.UnrecoverableKeyException: невозможно восстановить ключ

    как получить доступ к Wi-Fi-сетям и отобразить их в списке в android

    Где находится диск C в WSL?

    Кэширование в современных браузерах отстой, почему и как исправить?

    Передача данных между формами

    Укажите следующую загрузку в безопасном режиме / WinRE через командную строку?

    Как установить сетевой тайм-аут Windows для физически отключенного сопоставленного диска?

    Материнская плата Asus P7P55D-E LX – более 16 ГБ оперативной памяти?

    Вложенные маршруты в реакционном маршрутизаторе v4

    Означает ли Windows, когда виртуальная машина перемещается?

    Найти точку пересечения двух векторов в MATLAB

    Как использовать $ http promise ответ вне успеха обработчик

    Анализ спектра звука с использованием алгоритма FFT в Java

    Что такое ViewModelLocator и каковы его плюсы и минусы по сравнению с DataTemplates?

    Давайте будем гением компьютера.