news 2026/10/2 6:11:43

安装OpenClaw报错“未能创建 SSL/TLS 安全通道”?把 PowerShell 的 iwr 请求改到 TaoToken 的排查记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
安装OpenClaw报错“未能创建 SSL/TLS 安全通道”?把 PowerShell 的 iwr 请求改到 TaoToken 的排查记录

1. 安装 OpenClaw 时 iwr 报“未能创建 SSL/TLS 安全通道”到底卡在哪

你在 Windows PowerShell 里敲下iwr -useb https://openclaw.ai/install.ps1 | iex,本来想着一路回车把 OpenClaw 装好,结果终端直接甩回来一句:

iwr : 请求被中止: 未能创建 SSL/TLS 安全通道。

这句话是 .NET 的HttpWebRequest抛出来的,不是 OpenClaw 自己的报错。它说明一件事:PowerShell 在跟目标服务器握手时,双方没能谈拢用哪个 TLS 版本,或者证书链没验过去,连接在加密层就被掐断了。iwr是Invoke-WebRequest的别名,它底层走的是 .NET 的ServicePointManager,而 Windows PowerShell 5.1 默认跑在 .NET Framework 4.x 上,这个老框架的默认安全协议往往只开了 SSL3 和 TLS 1.0。现在绝大多数站点早就把 TLS 1.0 关了,只留 TLS 1.2 / 1.3,于是协商直接失败。

这个报错特别容易让人误判。有人以为是网络不通,去 ping 域名;有人以为是 OpenClaw 的安装脚本坏了,反复重下;还有人以为是杀毒软件拦了。其实都不是。你可以在同一台机器上用浏览器打开https://openclaw.ai/install.ps1,浏览器能正常显示脚本内容,因为 Chrome / Edge 自带现代 TLS 栈,跟 PowerShell 用的完全不是一套。这就解释了为什么“浏览器能开、命令行不行”。

我试过在一台刚装好的 Windows Server 上复现,现象一模一样:浏览器访问正常,iwr必挂。把 TLS 版本显式打开后,同一条命令立刻跑通。所以排查方向应该锁定在三个点:TLS 协议版本协商、证书链信任、以及 PowerShell 会话的 .NET 运行时配置。这篇记录就按这三条线走,顺带把安装脚本里可能触发的模型接口请求也一起理顺,让 OpenClaw 的安装流程能真正走完。

适合谁看:在 Windows 上用 PowerShell 装 OpenClaw、装其他 CLI 工具时遇到同类 SSL/TLS 报错的人;以及想把安装脚本里的模型调用指向一个稳定入口、避免再被证书问题绊住的人。下面所有命令都可以直接复制,我会标清楚哪条是临时生效、哪条是永久生效。

2. 动手前先把 TaoToken 的入口和 Key 准备好

OpenClaw 这类工具在安装和首次运行阶段,经常会去拉取模型列表或做一次连通性探测。如果这一步的请求地址、密钥、模型 ID 没配好,你就算把 TLS 修好了,安装脚本跑到后面还是会因为 401 或连接失败中断。所以先把入口统一到 TaoToken,后面配置里直接引用,省得来回改。

TaoToken 在这里扮演的是一个统一的模型调用入口:你拿到一个 Base URL 和一个 API Key,就能在 OpenClaw、Cline、Codex 这类工具里调用多家模型,不用每个工具单独去对接不同厂商的地址和鉴权方式。对安装排障来说,好处是请求目标固定、证书链稳定,不会因为脚本里写死了某个不稳定域名而反复触发 TLS 问题。

你需要准备三样东西,我把它叫“三件套”,后面配置里会反复出现:

项目值说明
Base URLhttps://taotoken.net/api所有模型请求的统一入口,注意结尾不带斜杠
API Key在控制台创建形如sk-开头的一串字符,只显示一次,记得存好
Model ID按需选择例如对话类、编码类模型的具体标识,填错会报 model not found

获取路径很直接:打开https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite创建密钥,复制保存;模型 ID 可以在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite里对照文档确认。如果你只是想先验证通道能不能通,可以用https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite里的对话入口手动发一条消息,确认 Key 有效。

这里有个细节要注意:Base URL 用https://taotoken.net/api,不要自己加/v1或结尾斜杠,不同工具对路径拼接的处理不一样,多写一段就可能 404。Key 不要写进会提交到 Git 的文件里,本地测试可以用环境变量,配置类文件放用户目录下。

准备好这三件套之后,再回到 TLS 排障。因为后面验证阶段,我们会用一条指向 TaoToken 的请求来确认“通道建立成功”,这样既验证了 TLS 修复,也验证了模型入口可用,一举两得。

3. 可复制的 PowerShell 配置:TLS 版本、证书链与 OpenClaw 安装脚本

这一节是核心,所有片段都能直接粘贴。先解决 TLS 协商,再处理证书链,最后把 OpenClaw 安装脚本跑起来,并把模型入口指向 TaoToken。

3.1 临时启用 TLS 1.2 / 1.3(当前会话生效)

在报错的同一个 PowerShell 窗口里执行:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls13

如果你用的是 Windows PowerShell 5.1,Tls13这个枚举值可能不存在,会报“找不到类型”。那就退回多版本兼容写法:

[Net.ServicePointManager]::SecurityProtocol = "Tls, Tls11, Tls12"

执行完再跑一次安装命令:

iwr -useb https://openclaw.ai/install.ps1 | iex

如果这次不再报 SSL/TLS 通道错误,说明就是协议版本没开。但临时设置只对当前窗口有效,关掉终端就失效,所以还需要永久配置。

3.2 永久写入注册表,让 .NET 默认启用强 TLS

Windows PowerShell 5.1 读的是 .NET Framework 的 Schannel 配置。用管理员权限打开 PowerShell,执行下面两段,分别针对 32 位和 64 位运行时:

$paths = @( 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319', 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319' ) foreach ($p in $paths) { if (-not (Test-Path $p)) { New-Item -Path $p -Force | Out-Null } New-ItemProperty -Path $p -Name 'SchUseStrongCrypto' -Value 1 -PropertyType DWord -Force | Out-Null New-ItemProperty -Path $p -Name 'SystemDefaultTlsVersions' -Value 1 -PropertyType DWord -Force | Out-Null }

改完注册表要重启 PowerShell 窗口才生效。这一步做完,新开的会话默认就会用系统支持的强 TLS,不用每次手动设SecurityProtocol。

3.3 证书链排查:确认不是中间证书缺失

如果 TLS 版本开了还是报同样的错,就要看证书链。用下面这条命令单独请求目标地址,把异常信息打全:

try { $r = Invoke-WebRequest -Uri 'https://openclaw.ai/install.ps1' -UseBasicParsing -MaximumRedirection 5 "状态码: $($r.StatusCode)" } catch { "异常类型: $($_.Exception.GetType().FullName)" "异常信息: $($_.Exception.Message)" if ($_.Exception.InnerException) { "内层异常: $($_.Exception.InnerException.Message)" } }

如果内层异常提到RemoteCertificateChainErrors或TrustFailure,说明本机根证书库缺东西。可以手动触发一次根证书更新:

certutil -generateSSTFromWU roots.sst Import-Certificate -FilePath .\roots.sst -CertStoreLocation Cert:\LocalMachine\Root

这条会从 Windows 更新拉取受信任根证书列表并导入。企业内网机器如果走了 TLS 检查设备,证书链会被替换,这种情况需要把内网 CA 根证书导入Cert:\LocalMachine\Root,否则任何iwr都会失败。

3.4 把 OpenClaw 的模型入口指向 TaoToken

安装脚本跑通后,OpenClaw 首次启动会读配置文件。不同版本路径略有差异,常见的是用户目录下的.openclaw或config目录。下面给一份 JSON 配置片段,字段名按常见约定写,你对照自己版本的文档微调:

{ "provider": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的密钥", "model": "你的模型ID", "timeout": 60000 }, "install": { "scriptUrl": "https://openclaw.ai/install.ps1", "verifyTls": true } }

如果你用的是 TOML 风格配置,等价写法:

[provider] baseUrl = "https://taotoken.net/api" apiKey = "sk-你的密钥" model = "你的模型ID" timeout = 60000

注意baseUrl结尾不要加斜杠,apiKey和model必须和你在控制台、文档里看到的一致。配置写完后,OpenClaw 的模型请求就会走 TaoToken,不再依赖脚本里可能写死的旧地址。

4. 验证请求:确认 TLS 通道建立成功、安装流程继续

配置改完不能只看“没报错”,要主动验证。下面分三步,从 TLS 握手到模型接口,逐层确认。

第一步,验证 TLS 握手本身。用curl.exe(Windows 10 1803 之后自带)看握手细节:

curl.exe -v https://openclaw.ai/install.ps1 -o NUL

输出里找这几行:SSL connection using TLSv1.2或TLSv1.3,以及subject:和issuer:证书信息。如果显示SSL certificate verify ok,说明证书链没问题。这一步能过,iwr基本就不会再报通道错误。

第二步,验证 OpenClaw 安装脚本能完整下载并执行。先只下载不执行,确认内容完整:

iwr -useb https://openclaw.ai/install.ps1 -OutFile .\install.ps1 Get-Content .\install.ps1 -TotalCount 20

看到脚本头部内容正常输出,说明下载链路通了。再执行:

powershell -ExecutionPolicy Bypass -File .\install.ps1

安装过程中如果出现模型探测请求,观察是否返回 200。如果卡在鉴权,回到第 2 节检查三件套。

第三步,直接验证 TaoToken 入口可用。用一条最小请求确认 Key 和地址正确:

$headers = @{ 'Authorization' = 'Bearer sk-你的密钥' 'Content-Type' = 'application/json' } $body = @{ model = '你的模型ID' messages = @(@{ role = 'user'; content = 'ping' }) } | ConvertTo-Json -Depth 5 try { $resp = Invoke-RestMethod -Uri 'https://taotoken.net/api/chat/completions' -Method Post -Headers $headers -Body $body "返回内容: $($resp.choices[0].message.content)" } catch { "状态: $($_.Exception.Response.StatusCode.value__)" "信息: $($_.Exception.Message)" }

返回里有choices字段和内容,说明模型入口通了。如果返回 401,是 Key 问题;返回 404,多半是路径或模型 ID 写错;返回reading choices之类的解析错误,通常是响应体不是预期 JSON,检查 Base URL 是否被工具自动拼了多余路径。

三步都过,就可以确认:TLS 通道建立成功,OpenClaw 安装流程能继续,模型调用也指向了稳定入口。

5. 本篇常见报错对照排查:401、local proxy failed、reading choices、OAuth

排障最怕报错信息模糊。下面把这类安装场景里高频出现的几条列出来,对照着看能省很多时间。

401 Unauthorized:Key 无效、过期,或者请求头没带上。检查Authorization是不是Bearer开头,中间有空格;确认 Key 没有多余换行;确认用的是当前控制台里有效的 Key。如果刚在https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite创建,注意复制完整。

local proxy failed或proxy connect类错误:本机设置了系统代理,但代理进程没起来或端口不对。PowerShell 的iwr会读系统代理设置。用netsh winhttp show proxy看当前代理,必要时netsh winhttp reset proxy清掉,再重试。注意这里说的是本机网络配置层面的排查,不涉及任何绕过网络管理的手段。

reading choices/cannot read property choices:请求发出去了,但返回体不是预期的 JSON 结构。常见原因是 Base URL 被工具自动补了/v1,或者模型 ID 填成了展示名而不是调用 ID。把baseUrl固定为https://taotoken.net/api,模型 ID 对照文档核对。

OAuth相关报错:某些工具首次登录会走 OAuth 流程,如果浏览器回调地址被占用或超时,会失败。检查默认浏览器能正常打开回调页,端口没被其他程序占用。如果工具支持 API Key 模式,优先用 Key,少一层交互就少一个故障点。

未能创建 SSL/TLS 安全通道反复出现:回到第 3 节,确认注册表两项都写了、PowerShell 窗口重启过、证书链没有 TrustFailure。企业机器重点查内网 CA 根证书是否导入。

The request was aborted: Could not create SSL/TLS secure channel英文版:和中文报错同源,处理方式完全一样。

Invoke-WebRequest : 基础连接已经关闭:多半也是 TLS 版本问题,按 3.1 临时开启后重试,再按 3.2 永久修复。

排查顺序建议固定为:先看 TLS 版本,再看证书链,再看代理,最后看鉴权和模型 ID。这个顺序从底层往上走,能避免在应用层瞎猜。

6. 把安装入口固定下来,后续少踩坑

TLS 这类问题修一次就该固化,不要每次开新终端都手动设。注册表那两项写完,新会话默认强加密,iwr、Invoke-RestMethod、curl.exe都会受益。OpenClaw 的配置里把baseUrl指向https://taotoken.net/api,Key 和模型 ID 用文档里确认过的值,安装脚本后续的模型探测就不会再因为地址漂移而失败。

如果你后面要长期跑编码类任务或 Agent 流程,可以了解下 Coding Plan 这类按周期计费的方式,入口在https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite;只是临时验证模型通不通,用模型对话页更轻,地址是https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite。接入细节和字段说明统一看文档https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite,Key 管理在https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite。

最后留一个我踩过的坑:改完注册表后没重启终端,直接重跑安装,还是报同样的错,白白多排查了半小时。记住,注册表改动只对新开的 PowerShell 会话生效。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 6:11:42

第17章:RAGFlow API Server 与 Task Executor 双进程架构

1 项目背景 业务场景 「云帆科技」的知识库问答机器人上线两周后,运维小李发现了一个奇怪的现象:每天下午 2 点,当 HR 批量上传新一版的制度文件时,正在使用聊天功能的同事就会抱怨"回答好慢"“怎么转了半天没反应”。…

作者头像 李华
网站建设 2026/10/2 6:10:40

从零搭建AI工程能力:数据管道、模型训练到部署监控全流程实战

从零搭建AI工程能力这件事,我前前后后折腾过三回。第一回是跟着网上的教程跑通了几个Demo,觉得自己行了;第二回是接手一个真实项目,发现Demo和工程之间隔着一条河;第三回才算真正把整套东西理顺,从数据处理…

作者头像 李华
网站建设 2026/10/2 6:09:55

Linux网络编程进阶:数据边界、epoll事件驱动与线上排查实战

“Linux网络编程”这个系列能写到第四弹,说明前面的基础已经滚过了:socket 怎么创建、bind 和 listen 怎么配对、select 和 poll 怎么轮询、简单客户端服务端怎么跑通。按照我自己的习惯,到这一阶段就该换个视角了——不再问“这代码能不能跑…

作者头像 李华
网站建设 2026/10/2 6:09:53

OpenClaw本地安装实战:Node.js与Git环境准备及TaoToken接入配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 6:09:28

审稿----拒绝审稿的套话:用TaoToken统一Key跑通AI审稿工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华