Вызывается 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 
  • Подключитесь к Postgres через SSL, используя R
  • прием HTTPS-соединений с самозаверяющими сертификатами
  • Почему некоторые веб-сайты отображают название компании рядом с URL-адресом?
  • ssl.SSLError: версия протокола предупреждения tlsv1
  • Как заблокировать определенный HTTPS-трафик?
  • Использование SSL и SslStream для одноранговой аутентификации?
  • Почему OS X не доверяет SSL-сертификату GitHub?
  • Повторное использование сеансов SSL в Android с HttpClient
  • Запрос на перекрестный запрос заблокирован
  • Самоподписанный сертификат SSL или CA?
  • Lion не удалось загрузить SSL-сайты
  • Interesting Posts

    Chrome Dev Tools – «Размер» и «Контент»,

    Освобождение отключаемого виртуального последовательного порта

    Лучший способ использования StructureMap для реализации шаблона страtagsи

    Coldfusion 10 returnformat = “JSON” добавление символов

    В чем разница между valueforKey :, objectForKey :, и valueForKeyPath :?

    Инструмент командной строки для установки тега msspecific «рейтинг» в jpeg

    Как закодировать параметр имени файла заголовка Content-Disposition в HTTP?

    Представление нулевого значения в JSON

    yii CPasswordHelper: hashPassword и verifyPassword

    Mac OS X «hosts» файл, могу ли я включить в него другие файлы?

    Почему генераторы не поддерживают map ()?

    Как сохранить настройки пользовательских настроек в Java?

    Прозрачная стрелка / треугольник с отступом

    Предотвращение использования LibreOffice от использования интеллектуальных котировок ("") вместо (немых) прямых котировок?

    Может ли HTML5 взаимодействовать с периферийными устройствами, такими как сканеры и считыватели кредитных карт?

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