powershell使用ServerCertificateValidationCallback接受自签名证书

时间:2018-07-02 12:49:06

标签: powershell certificate self-signed

我似乎无法使用Powershell 5.1使其正常工作。该设备是Cisco MX800 CE9.3。

$url = "https://10.1.135.20/getxml?location=/Status"
[Net.ServicePointManager]::ServerCertificateValidationCallback={$true} 
$webclient = New-Object System.Net.Webclient
$credCache = New-Object System.Net.CredentialCache
$creds = New-Object System.Net.NetworkCredential($user,$pwd)
$credCache.Add($url, "Basic", $creds)
$webclient.Credentials = $credCache
$webpage = $webclient.DownloadString($url)

使用http运行此脚本将按预期返回XML,但是使用https将返回以下错误

使用“ 1”作为参数调用“ DownloadString”的异常:“基础连接已关闭:发送时发生意外错误。”     + CategoryInfo:未指定:(:) [],MethodInvocationException     + FullyQualifiedErrorId:WebException

1 个答案:

答案 0 :(得分:0)

在上述情况下,在寻找答案之后,我挖了一下并进行了数据包捕获。 使用Powershell与服务器对话时捕获一个数据包,通过Web浏览器与服务器对话时捕获一个数据包。

PS客户端Hello使用的是TLS1.0

Web浏览器Client Hello使用的是TLS1.2

因此,在PS中,我将其添加到了代码中,从而可以对服务器使用https。         [Net.ServicePointManager] :: SecurityProtocol = [Net.SecurityProtocolType] :: Tls12