【发布时间】:2018-03-29 11:16:07
【问题描述】:
我正在使用 powershell v5 使用带有自签名证书的 TLS1.2 调用内部 API。当我调用 api 时,我总是得到Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send.
例如:
PS> [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
PS> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
PS> $url = "https://someinternalserver/blah"
PS> $response = Invoke-WebRequest $url
Invoke-WebRequest : The underlying connection was closed: An unexpected error occurred on a send.
At line:1 char:1
(我查看了错误对象,但没有发现任何有用的信息。)
但是,如果我使用 WebClient 的实例调用相同的 URL,那么使用 WebClient 的调用 AND 所有后续的 powershell 调用都可以正常工作:
PS> $webClient = New-Object System.Net.WebClient
PS> $str = $webClient.DownloadString($url)
PS> Write-Host $str
body of request
PS> $response = Invoke-WebRequest $url
PS> Write-Host $response.Content
body or request
我不确定发生了什么,但我怀疑它与自签名证书或加密货币有关。以下是 chrome 关于加密的说法:
我之前使用过 powershell 调用带有自签名证书的 API,但从未遇到过此类问题。
解决方案:我想在不首先使用 WebClient 的情况下调用 API。 谢谢。
【问题讨论】:
标签: powershell