將檔案從雲端代理程式下載到 Windows 端點時,可能會因安全性通訊協定失敗。

問題

Windows 平台下載指令碼失敗,出現訊息如下:
請求中止:無法建立 SSL/TLS 安全通道。
雲端 Proxy 中託管三種 PowerShell 指令碼,可以在 Windows 端點虛擬機器下載和執行以實現不同的目的:
  • 使用指令碼安裝自訂 Telegraf (download.ps1)。
  • 在實體伺服器上安裝自訂 Telegraf (unmanagedagent_setup_sample.ps1)。
  • 在受管理或非受管理的虛擬機器上設定開放原始碼 Telegraf (open_source_telegraf_monitor.ps1)。

解決方案

使用以下命令略過 ServerCertificateValidationCallback
if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type)
{
$certCallback = @"
    using System;
    using System.Net;
    using System.Net.Security;
    using System.Security.Cryptography.X509Certificates;
    public class ServerCertificateValidationCallback
    {
        public static void Ignore()
        {
            if(ServicePointManager.ServerCertificateValidationCallback ==null)
            {
                ServicePointManager.ServerCertificateValidationCallback +=
                    delegate
                    (
                        Object obj,
                        X509Certificate certificate,
                        X509Chain chain,
                        SslPolicyErrors errors
                    )
                    {
                        return true;
                    };
            }
        }
    }
"@
    Add-Type $certCallback
 }
[ServerCertificateValidationCallback]::Ignore()
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

下載並執行所需指令碼後,可以啟用 ServerCertificateValidationCallback