PowerShell Gallery TLS 协议升级为 1.2 版本

PowerShell Gallery TLS 协议升级为 1.2 版本

PowerShell Gallery是 PowerShell 相关内容的中心存储库。 在 PowerShell Gallery中,可找到包含 PowerShell 命令和 Desired State Configuration (DSC) 资源的实用 PowerShell 模块,还可找到 PowerShell 脚本。 其中一些包由 Microsoft 编写,另一些包由 PowerShell 社区编写。

和其他包管理工具(比如 javascript 世界里的 npm,Linux 世界里的 apt,yum)一样,PowerShell Gallery 也提供了基于 PowerShell 的包管理命令,在客户端的 PowerShell 运行时中即可执行。比如常见的 Install-Module, Update-Module

从 2020 年 4 月起,PowerShell Gallery的 TLS 支持从 1.0,1.1 升级为 1.2,并且所有 1.0,1.1版本的协议都会被禁止。因此,如果客户端不修改访问协议,那么就会出现如下的错误:

-w947

官方的解释是在 TLS 1.0和 1.1 协议下,PowerShell Gallery 目前没有安全性方面的问题,但是由于将来可能会发生协议降级攻击和其他TLS漏洞,因此在 PowerShell Gallery 中停止对TLS 1.0和1.1的支持。

由于服务器只是禁止了访问,并没有关于协议升级的特别提示,所以很大概率你会怀疑你的网络连接,是否有使用代理,是不是 PSRepository 没有安装好等情况,所以希望本文能帮助大家少耗费些排查错误的时间。

解决方法

引用官方的标准解决方法,修改当前网络安全协议为 TLS 1.2,然后升级 PowerShellGet 包。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 
Install-Module PowerShellGet -RequiredVersion 2.2.4 -SkipPublisherCheck

参考资料