You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell WebRequest脚本切换HTTPS后无法创建SSL/TLS安全通道

问题根因

报错核心是TLS协议版本不匹配,附带原脚本的代码笔误问题:

  • PowerShell 5.1调用.NET Framework内置的WebRequest组件发起HTTPS请求时,默认仅启用SSL 3.0、TLS 1.0这类已经被淘汰的旧安全协议,不会主动使用TLS 1.2发起握手。当前部署的HCL Domino服务端已强制要求TLS 1.2连接,会直接拒绝旧版SSLv3的连接请求,正好对应两边的报错信息:

    TLS/SSL connection failed with rejected SSLv3 connection
    Exception calling "GetResponse" with "0" argument(s): "The request was aborted: Could not create SSL/TLS secure channel."

  • 浏览器访问HTTPS资源正常,是因为浏览器自身的TLS协议配置和PowerShell/.NET的配置完全独立,浏览器默认开启TLS 1.2支持,不会影响PowerShell的默认请求行为。
  • 原脚本存在代码笔误:第二次重试请求时调用了从未定义过的变量$HTTP_Request2,就算TLS问题修复,运行到这行也会抛出变量不存在的错误。
可落地修复方案

所有修改都在脚本内完成,不需要调整服务器系统配置,无副作用:

  • 第一步:在脚本所有Web请求逻辑的最开头,加一行配置,强制当前PowerShell会话的Web请求使用TLS 1.2协议:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

注意:这行配置仅对当前脚本运行的单次PowerShell会话生效,不会修改系统全局设置

  • 第二步:把脚本内所有检测URL的前缀统一从http://改为https://,同时修正原脚本的变量笔误,将错误的$HTTP_Request2.GetResponse()替换为$HTTP_Request.GetResponse()
  • 第三步(可选优化):原脚本两次重试无间隔、未主动释放HTTP连接资源,长期运行可能出现资源泄漏,可直接替换为逻辑更严谨的完整检测脚本:
# 强制当前会话使用TLS 1.2协议
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

$checkUrl = 'https://myserver/path-to/ressource/'
$maxRetryCount = 2
$retryWaitSeconds = 2
$requestTimeoutMs = 5000
$siteAvailable = $false

for ($i = 0; $i -lt $maxRetryCount; $i++) {
    try {
        $request = [System.Net.WebRequest]::Create($checkUrl)
        $request.Timeout = $requestTimeoutMs
        $response = $request.GetResponse()
        $statusCode = [int]$response.StatusCode
        $response.Close() # 主动释放连接资源,避免泄漏
        if ($statusCode -eq 200) {
            Write-Host -ForegroundColor Green "Site " $request.RequestUri " is OK!"
            $siteAvailable = $true
            break
        }
    }
    catch {
        Write-Host "第 $($i+1) 次检测失败:$($_.Exception.Message)"
        if ($i -lt $maxRetryCount - 1) {
            Start-Sleep -Seconds $retryWaitSeconds
        }
    }
}

if (-not $siteAvailable) {
    Write-Host "The Site may be down, please check!"
    # 在此处保留原有管理员告警邮件发送逻辑即可
}
验证步骤
  1. 先在服务器上手动运行修改后的脚本,确认不再报SSL/TLS相关错误,站点正常时输出绿色OK提示,同时Domino控制台不再出现SSLv3连接被拒的日志
  2. 手动测试通过后,触发任务计划程序配置的批处理任务,确认任务运行账号有足够权限执行脚本,没有异常报错即可正式投入使用

内容的提问来源于stack exchange,提问作者Lothar Mueller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:54:22