将文件从云代理下载到 Windows 端点时,该操作可能会由于安全协议而失败。

问题

在 Windows 平台上下载脚本失败,并显示以下消息:
请求已中止: 无法创建 SSL/TLS 安全通道 (The request was aborted: Could not create SSL/TLS secure channel)。
云代理中托管三种 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