代码之家  ›  专栏  ›  技术社区  ›  Pero P.

PowerShell 5.1中的默认安全协议

  •  0
  • Pero P.  · 技术社区  · 5 年前

    我在Windows 2016标准服务器上运行的PowerShell 5.1脚本有问题,由于默认设置,该脚本失败 SecurityProtocol 使用 HttpClient :

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

    我花了大量时间研究这一点,我理解为什么会发生这种情况,以及强制使用更安全协议的各种选择。然而,我完全无法理解为什么问题服务器和运行PowerShell 5.1的Windows 10工作站之间存在不同的默认值。

    在服务器(Windows 2016 Standard)上,脚本出现故障:

    我认为这是默认值 安全协议 ,特定弱协议:

    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)上,脚本工作:

    A. 安全协议 属于 SystemDefault :

    PS > [Net.ServicePointManager]::SecurityProtocol
    SystemDefault
    

    对于 $pVersionTable :

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

    正如你所看到的,两者的回报不同 安全协议 默认值,但它们似乎只有较小的PS版本不同; 5.1.14393.3866 vs 5.1.19041.546 .

    服务器和工作站都有相当普通的设置。没有对任何一个框进行任何建议默认为更安全协议的注册表更改;即 SchUseStrongCrypto ,属性位于 HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols 等。两台服务器都有多达个。已安装NET Framework 4.8。

    我真的不知道还有什么地方可以看,因为如果一个小PS版本的差异会带来这种变化,我会感到惊讶。我错过了什么(Windows安全更新?)还是我不明白 安全协议 违约有效?

    0 回复  |  直到 5 年前
    推荐文章