解决 PowerShell 中 SSL/TLS 安全通道错误

作者:4042024.01.29 14:53浏览量:24

简介:在使用 PowerShell 的 Invoke-WebRequest 命令时,遇到“请求被中止: 未能创建 SSL/TLS 安全通道”的错误,通常是由于 SSL/TLS 握手失败引起的。本文将提供解决此问题的方法。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

在使用 PowerShell 的 Invoke-WebRequest 命令时,有时会遇到“请求被中止: 未能创建 SSL/TLS 安全通道”的错误。这种错误通常是由于 SSL/TLS 握手失败引起的,可能是由于以下原因之一:

  1. 服务器使用了不受信任的证书颁发机构(CA)签发的证书。
  2. 服务器使用了过期的证书。
  3. 客户端与服务器之间的 SSL/TLS 协议版本不兼容。
    为了解决这个问题,你可以尝试以下几种方法:
    方法一:禁用 SSL/TLS 协议版本检查
    在 PowerShell 中,你可以使用 -SkipCertificateCheck 参数来禁用 SSL/TLS 协议版本检查。这将使 PowerShell 忽略服务器证书的问题,但请注意,这将降低安全性。
    例如:
    1. Invoke-WebRequest -Uri 'https://example.com' -SkipCertificateCheck
    方法二:使用证书颁发机构的根证书更新 PowerShell 的根证书存储
    如果你确信服务器使用了有效的证书,但仍然出现握手失败的错误,那么可能是因为你的 PowerShell 客户端没有最新的证书颁发机构的根证书。你可以通过更新 PowerShell 的根证书存储库来解决这个问题。
    首先,你需要下载最新的证书颁发机构的根证书。通常,这些证书可以从证书颁发机构的网站上获取。然后,你可以使用以下命令将根证书导入到 PowerShell 的根证书存储库中:
    1. Import-Module Posh-SecMod
    2. Install-Certificate -Path 'path o
    3. oot_certificate.cer' -StoreLocation 'LocalMachine' -StoreName 'Root'
    请将 'path o oot_certificate.cer' 替换为你的根证书文件的实际路径。
    方法三:更新 PowerShell 的 TLS 版本
    如果你的服务器和客户端之间的 SSL/TLS 协议版本不兼容,你可能需要更新 PowerShell 的 TLS 版本。你可以通过设置 UseDefaultCredentials 参数为 $false 来强制使用特定的 TLS 版本。例如,要使用 TLS 1.2,你可以这样做:
    1. Invoke-WebRequest -Uri 'https://example.com' -UseDefaultCredentials $false -TlsVersion '1.2'
    请注意,你需要根据你的具体情况选择适合的方法来解决这个问题。在处理 SSL/TLS 问题时,请务必谨慎行事,以免降低系统的安全性。如果可能的话,最好联系服务器的管理员或技术支持人员,以获取更具体的解决方案。
article bottom image

相关文章推荐

发表评论