Skip to main content

问题

在运行使用 Invoke-WebRequest 的 PowerShell 脚本时,可能会出现以下错误:
Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.
这是因为脚本尝试使用安全协议(TLS/SSL)连接到服务器,但系统上未启用所需的协议(如 TLS 1.2)。
Image

解决方案

要在当前会话中快速修复此问题,你可以在 PowerShell 会话中运行以下命令以启用必要的协议:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls11 -bor ` [Net.SecurityProtocolType]::Tls12 -bor ` [Net.SecurityProtocolType]::Tls -bor ` [Net.SecurityProtocolType]::Ssl3
但是,此修复是临时的,需要在每个新的 PowerShell 会话中重新应用。

注册表项说明

注册表设置描述
SchUseStrongCrypto强制 .NET Framework 使用强加密协议(例如 TLS 1.2)。
SystemDefaultTlsVersions确保 .NET 应用程序使用系统默认的 TLS 版本,使其能够适应较新的协议。

如果错误仍然存在

如果错误仍然存在,请考虑采取以下措施,以确保所有 .NET 应用程序都能安全连接,而无需在每个会话中手动干预:
  • 确保你的系统支持 TLS 1.2,并已在操作系统中启用。
  • 升级到 PowerShell Core 或 PowerShell 7,它们默认使用现代安全协议。