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,它們預設使用現代的安全通訊協定。