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 (将#修改为@)