微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PowerShell 5.1中的默认SecurityProtocol

如何解决PowerShell 5.1中的默认SecurityProtocol

我在运行带有PowerShell 5.1的Windows 2016 Standard服务器上运行的脚本时遇到问题,由于使用SecurityProtocol发出Web请求时认使用HttpClient,该脚本失败了:

The request was aborted: Could not create SSL/TLS secure channel.

我花了很多时间研究此问题,并且我理解了为什么会发生这种情况,并了解了可用于强制实施更安全协议的各种选项。但是,我完全坚持为什么在问题服务器和运行PowerShell 5.1的Windows 10工作站之间看到不同的认值。

在脚本失败的服务器上(Windows 2016 Standard):

对于认的SecurityProtocol,特定的弱协议,我看到了这一点:

PS > [Net.ServicePointManager]::SecurityProtocol
Ssl3,Tls

$PsversionTable返回此:

Name                           Value
----                           -----
Psversion                      5.1.14393.3866
PSEdition                      Desktop
PSCompatibLeversions           {1.0,2.0,3.0,4.0...}
BuildVersion                   10.0.14393.3866
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

在我的工作站上(Windows 10 2004),脚本在其中运行:

SecurityProtocol中的SystemDefault

PS > [Net.ServicePointManager]::SecurityProtocol
SystemDefault

$PsversionTable

Name                           Value
----                           -----
Psversion                      5.1.19041.546
PSEdition                      Desktop
PSCompatibLeversions           {1.0,4.0...}
BuildVersion                   10.0.19041.546
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

如您所见,这两个返回不同的SecurityProtocol认值,但是它们之间的差别仅在于次要PS版本。 5.1.14393.38665.1.19041.546

服务器和工作站的设置都相当原始。任一框均未进行任何建议认更改为更安全协议的注册表更改;即SchUseStrongCryptoHKLM:\SYstem\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols下的属性等。两台服务器均已安装并包含.NET Framework 4.8以下版本。

我真的不知道在其他地方可以看到,如果较小的PS版本的不同会带来此更改,我会感到惊讶。我是否错过了某些内容(Windows安全更新?)还是不了解SecurityProtocol认设置的工作原理?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。