文章目录
- [OpenClaw 公网访问难题?一招解决 "control ui requires device identity" 报错](#OpenClaw 公网访问难题?一招解决 "control ui requires device identity" 报错)
-
- 环境信息
- 一、问题现象
- 二、原因分析
-
- [2.1 浏览器安全上下文策略](#2.1 浏览器安全上下文策略)
- [2.2 解决方案有哪些?](#2.2 解决方案有哪些?)
- 三、解决方案(在配置中禁用了设备身份验证检查)
-
- [3.1 方法一:命令行快速配置(推荐)](#3.1 方法一:命令行快速配置(推荐))
- [3.2 方法二:手动编辑配置文件](#3.2 方法二:手动编辑配置文件)
- 四、验证修复
-
- [4.1 检查服务状态](#4.1 检查服务状态)
- [4.2 测试公网访问](#4.2 测试公网访问)
- [4.3 检查日志](#4.3 检查日志)
- 五、总结
- 六、常见问题
-
- [Q1: 设置后 Token 还需要吗?](#Q1: 设置后 Token 还需要吗?)
- [Q2: 这样做安全吗?](#Q2: 这样做安全吗?)
- [Q3: 如何恢复默认安全设置?](#Q3: 如何恢复默认安全设置?)
- [Q4: 生产环境应该怎么做?](#Q4: 生产环境应该怎么做?)
- 七、总结
OpenClaw 公网访问难题?一招解决 "control ui requires device identity" 报错
环境信息
- OpenClaw 版本: 2026.2.26 或更高版本
- 操作系统: Ubuntu / Linux / macOS
- 问题类型: 公网访问安全上下文限制
一、问题现象
在部署 OpenClaw 后,通过公网 IP 或域名访问控制界面时,浏览器提示以下错误:
control ui requires device identity (use HTTPS or localhost secure context)
即使配置了正确的公网 IP 和端口映射,使用 http://你的IP:18789 或 http://你的域名:18789 访问仍然失败,而其他人可能可以直接通过 HTTP 公网访问。

二、原因分析
2.1 浏览器安全上下文策略
OpenClaw 的控制界面使用了现代浏览器的 Web Crypto API 来实现设备身份验证。出于安全考虑,这套 API 只能在"安全上下文"中运行 。
所谓的"安全上下文",通常指以下两种情况:
- 本地安全环境 :访问
https://localhost或https://127.0.0.1。 - 网络安全环境 :通过 HTTPS 协议 访问,且域名拥有有效的 SSL 证书。
当你使用 HTTP 协议访问公网地址时,浏览器会判定这是一个"非安全上下文",从而直接拒绝 OpenClaw 获取设备身份信息,导致访问失败。
2.2 解决方案有哪些?
解决方案有三种:
- 配置HTTPS 和 SSL 证书
- 在配置中禁用了设备身份验证检查
- 通过内网或 VPN 访问,浏览器认为是安全上下文(localhost,可通过本地ssh云主机方式)
三、解决方案(在配置中禁用了设备身份验证检查)
3.1 方法一:命令行快速配置(推荐)
在服务器终端执行以下命令:
bash
# 1. 允许非安全认证(解决跨域问题)
openclaw config set gateway.controlUi.allowInsecureAuth true
# 2. 关键步骤:禁用设备身份验证(允许 HTTP 访问)
openclaw config set gateway.controlUi.dangerouslyDisableDeviceAuth true
# 3. 重启网关服务使配置生效
openclaw gateway restart
3.2 方法二:手动编辑配置文件
如果你习惯修改配置文件,可以直接编辑 ~/.openclaw/openclaw.json:
json
"gateway": {
"port": 18789,
"bind": "lan", // 确保绑定到 LAN 或 0.0.0.0
"controlUi": {
"allowInsecureAuth": true,
"dangerouslyDisableDeviceAuth": true, // 核心配置项
"allowedOrigins": [
"http://你的域名或IP:18789"
]
},
"auth": {
"mode": "token",
"token": "你的复杂Token"
}
// ... 其他配置
}
修改后同样需要重启服务:openclaw gateway restart。

四、验证修复
执行以下步骤验证问题是否解决:
4.1 检查服务状态
bash
openclaw gateway status
确认服务正在监听所有网络接口(0.0.0.0:18789)。

4.2 测试公网访问
在浏览器中访问(如下图,域名是没有https而是http的,可以进行访问了!):
http://你的公网IP或域名:18789/#token=你的Token

4.3 检查日志
bash
openclaw gateway logs
确认启动日志中不再出现安全上下文相关错误。
五、总结
| 问题根源 | 解决方案 | 命令示例 |
|---|---|---|
| HTTP 非安全上下文 | 禁用设备身份验证 | openclaw config set gateway.controlUi.dangerouslyDisableDeviceAuth true |
| 配置未生效 | 重启 OpenClaw 网关 | openclaw gateway restart |
| 跨域访问限制 | 允许非安全认证 | openclaw config set gateway.controlUi.allowInsecureAuth true |
核心要点 :OpenClaw 默认要求安全上下文访问,如需 HTTP 公网访问,需通过配置 dangerouslyDisableDeviceAuth: true 来禁用设备身份验证检查。
六、常见问题
Q1: 设置后 Token 还需要吗?
需要 。设置 dangerouslyDisableDeviceAuth: true 只绕过设备身份验证,Token 认证仍然有效。你必须提供正确的 Token 才能登录。
Q2: 这样做安全吗?
存在风险。禁用设备身份验证会削弱安全防护,建议:
- 使用强 Token(建议 32 位以上随机字符)
- 配置 IP 白名单限制访问来源
- 尽快配置 HTTPS(推荐使用 Nginx 反向代理 + Let's Encrypt 免费 SSL 证书)
Q3: 如何恢复默认安全设置?
bash
openclaw config set gateway.controlUi.dangerouslyDisableDeviceAuth false
openclaw gateway restart
Q4: 生产环境应该怎么做?
对于生产环境,强烈推荐以下方案:
- 使用 Nginx 反向代理:配置 HTTPS 并转发到本地 OpenClaw 端口
- 配置域名 SSL 证书:申请域名并配置SSL证书
- 保持默认安全设置:不推荐禁用设备身份验证
七、总结
通过设置 dangerouslyDisableDeviceAuth: true,我们可以快速解决 OpenClaw 的公网 HTTP 访问问题。但请牢记:这是以降低安全性为代价的 。在生产环境中,务必采用 HTTPS 或其他安全加固措施,在便利性与安全性之间找到平衡点。
希望这篇文章能帮助你解决 OpenClaw 部署中的常见问题!如果你有更好的解决方案或安全建议,欢迎在评论区分享讨论。