10

我正在制作一个自动脚本来从发布最新编译代码的站点中读取列表。这是我已经弄清楚的部分。脚本的下一部分是从具有 Untrusted Cert 的服务器中获取编译后的代码。

这就是我要获取文件的方式:

$web = new-object System.Net.WebClient
$web.DownloadFile("https://uri/file.msi", "installer.msi")

然后我收到以下错误:

使用“2”参数调用“DownloadFile”的异常:“底层连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。”

我知道我遗漏了一些东西,但我无法找到正确的方法来搜索它。

4

4 回答 4

4

Brad 是正确的,但请注意 PowerShell V1 并没有真正对委托提供本机支持,在这种特定情况下您将需要它。我相信这应该可以让您绕过这个限制(实际上您描述的场景正是使用的示例之一)。

于 2008-09-28T23:42:58.747 回答
3

您需要为ServicePointManager.ServerCertificateValidationCallback编写回调处理程序。

于 2008-09-28T23:35:08.627 回答
2

如果您使用的是 powershell 并遇到此错误。使用命令:

[Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12

在下载软件包之前。它强制 PS 使用 TLS 1.2。

失败的原因可能是您尝试下载的网站禁用了对 PS 默认使用的 TLS 1.0 的支持。

于 2018-07-06T11:22:50.230 回答
0

ServerCertificateValidationCallback 最简单的 PowerShell 实现是一个始终返回 true 的脚本块。这适用于 PowerShell 5.1 版;没有在其他版本上测试过。

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

参见 Bhargav Shukla 的博客

于 2019-09-10T15:50:28.580 回答