Используя методы Invoke-WebRequest и Invoke-RestMethod Powershell v3, я успешно использовал метод POST для публикации файла json на веб-сайте https.
Я использую команду
$cert=New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("cert.crt")
Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Body $json -ContentType application/json -Method POST
Однако, когда я пытаюсь использовать метод GET, например:
Invoke-WebRequest -Uri https://IPADDRESS/resource -Credential $cred -certificate $cert -Method GET
Возвращается следующая ошибка
Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send.
At line:8 char:11
+ $output = Invoke-RestMethod -Uri https://IPADDRESS/resource -Credential $cred
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
Я попытался использовать следующий код, чтобы игнорировать сертификат SSL, но я не уверен, что он действительно что-то делает.
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
Может ли кто-нибудь дать некоторое руководство о том, что здесь может быть не так и как это исправить?
Спасибо
.net
rest
powershell
https
флойд
источник
источник
Invoke-RestMethod
илиInvoke-WebRequest
?Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.
вы можете попробовать изучить $ Error [0] .Exception.InnerException для получения дополнительной информации .. .Ответы:
Этот обходной путь сработал для меня: http://connect.microsoft.com/PowerShell/feedback/details/419466/new-webserviceproxy-needs-force-parameter-to-ignore-ssl-errors
По сути, в вашем сценарии PowerShell:
источник
-SkipCertificateCheck
now.Ответ Ли отличный, но у меня также были проблемы с тем, какие протоколы поддерживает веб-сервер.
После добавления следующих строк я смог получить https-запрос. Как указано в этом ответе https://stackoverflow.com/a/36266735
Мое полное решение с кодом Ли.
источник
SecurityProtocol
глобальное статическое свойство. Господи, я только что потерял ДНИ на проверку сертификатов, доверительных отношений, сети, маршрутов, разрешений и кучу всего прочего, пытаясь решить неопределеннуюendpoint does not respond
ошибку при доступе к одному конкретному серверу через https (все остальные работают) только потому, что этот проклятый PowerShell 5.1 по умолчанию SSL3, TLS , и он просто БЛОКОВ проклятую TLS11 и TLS12 BY DEFAULT бог , сколько я ненавижу это дерьмо я написал , что сценарий в C # / рубин / C ++, или что - то еще , что не PowerShellВы пробовали использовать
System.Net.WebClient
?источник
Альтернативная реализация в чистом виде PowerShell(без
Add-Type
изC # источник):источник
Следующее сработало для меня (и использует последние нерекомендуемые средства для взаимодействия с SSL-сертификатами / функциями обратного вызова) и не пытается загружать один и тот же код несколько раз в одном сеансе PowerShell:
Это было адаптировано из следующей статьи https://d-fens.ch/2013/12/20/nobrainer-ssl-connection-error-when-using-powershell/
источник
Я обнаружил, что когда я использовал эту функцию обратного вызова, чтобы игнорировать сертификаты SSL
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
Я всегда получал сообщение об ошибке,
Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send.
которое звучит как результат, который вы получили.Я нашел это сообщение на форуме, которое привело меня к функции ниже. Я запускаю это один раз внутри своего другого кода, и он работает для меня.
источник
Вы можете использовать параметр -SkipCertificateCheck для достижения этой цели как однострочную команду (ЭТОТ ПАРАМЕТР ПОДДЕРЖИВАЕТСЯ ТОЛЬКО В ОСНОВНОЙ ПЕРЕДАЧЕ)
источник
Я попытался найти документацию по EM7 OpenSource REST API. Пока не повезло.
http://blog.sciencelogic.com/sciencelogic-em7-the-next-generation/05/2011
Об OpenSource REST API много говорят, но нет ссылки на фактический API или какую-либо документацию. Может быть, я был нетерпеливым.
Вот несколько вещей, которые вы можете попробовать
Попробуйте это, чтобы увидеть, можете ли вы отфильтровать столбцы, которые вы получаете из API.
или вы также можете попробовать использовать это
Заголовки стиля завитка
Я тестировал IRM / IWR с помощью twitter JSON api.
Надеюсь это поможет.
источник
New-SelfSignedCertificate -certstorelocation cert: \ localmachine \ my -dnsname {your-site-hostname}
в PowerShell с использованием прав администратора. Это создаст все сертификаты в личном каталоге.
Убедитесь, что имя хоста веб-сайта и dns-name сертификата должны точно совпадать
источник
Эти параметры реестра влияют на .NET Framework 4+ и, следовательно, на PowerShell. Установите их и перезапустите любые сеансы PowerShell, чтобы использовать последнюю версию TLS, перезагрузка не требуется.
См. Https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls#schusestrongcrypto
источник
Если вы запустите это как администратор, эта ошибка должна исчезнуть
источник