提问人:André IT 提问时间:10/6/2023 更新时间:11/22/2023 访问量:229
PowerShell 脚本 - SSL/TLS 安全通道失败
PowerShell Script - SSL/TLS secure channel fail
问:
我一直在尝试使用 POST 与安全的 REST API 进行通信,并正确传递证书,但我仅在生产服务器上收到错误“请求已中止:无法创建 SSL/TLS 安全通道”。
我没有升级 Microsoft Windows Server 2008 R2 的选项。
已安装 Microsoft Framework 4.8,已应用所有修补程序,并启用了所有安全协议。
--在服务器 2008 上使用 POSTMAN 运行相同的 POST 效果很好
你们中有人知道为什么 PowerShell 脚本不仅适用于服务器吗?
在本地运行相同的 Powershell 脚本,它在 Windows 11 下完美运行
你们有什么建议吗?到目前为止,我已经尝试了很多东西,但没有任何效果:(
非常感谢
答:
您可能需要确保在注册表中为 SCHANNEL 启用 Tls1.2。从以下键开始:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\Tls12\Client
如果尚不存在,请创建它,并确保将 dword 设置为 。此外,在重新启动服务器之前,对 SCHANNEL 配置所做的任何更改都不会生效。Enabled
1
接下来,检查注册表中是否将 .Net 配置为使用强加密协议:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions" = dword:00000001
"SchUseStrongCrypto" = dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions" = dword:00000001
"SchUseStrongCrypto" = dword:00000001
那么 PowerShell 中的这一行实际上应该是有效的:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
但是,正如我在评论中指出的那样,您确实应该尽一切努力获得升级服务器的权限。
Windows Server 2008 R2 已完全停用,并且已经停用了好几年。这意味着它在那段时间里没有任何更新......甚至没有关键的安全补丁,尽管有多个活跃的临界级 CVE。仍然使用它是危险和不负责任的;律师可能会使用“重大过失”之类的短语。
所有补丁都已应用...
我希望如此,因为几年来没有发布任何新补丁。
目前使用的最低安全版本是 Windows Server 2016(2012 R2 也在不到一周的时间内结束生命周期。这是一件值得找新工作的事情,因为当(而不是如果)这件事被破坏时,你不想承担责任。
评论
或者,如果无法升级,或者您在所需的计算机上没有管理员,则可以使用 curl for windows(官方版本,而不是 PS Alias)(https://curl.se/windows/),因为它包含使用 TLS1.3 的必要库
让 curl 与 PS 一起使用可能有点工作,因为它与“Web-Session”和其他内置的东西没有相同的可能性,所以你需要自己写一个包装器才能让它工作,但它是可行的。
评论