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

如何解决noVNC触发serververification事件的问题?

问题描述

我正尝试实现noVNC API以创建自定义元素,用于处理canvas上的noVNC帧。当调用new RFB()启动连接时触发了serververification事件,且事件的isTrusted字段为false。官方文档仅说明该事件“在需要用户确认服务器身份时触发”,想知道如何避免触发该事件,直接建立连接?

相关代码:

// javascript
this.rbf = new RFB(screen, this.url.href)

// 触发时机:需要用户确认服务器身份时
this.rbf.addEventListener(
   'serververification', (event) => {
       console.log('@SERVER-VERIFICATION >> ', event.type)
   }
)

启动websockify的命令:

websockify -v 8888 192.168.1.11:5900
解决方案

1. 使用受信任的SSL证书(生产环境推荐)

serververification事件触发的核心原因是noVNC无法验证服务器SSL证书的可信度。如果你的noVNC页面通过HTTPS访问,同时给websockify配置浏览器信任的正规SSL证书(如CA机构颁发的证书),浏览器会自动认可服务器身份,不会触发该事件。

配置websockify时指定证书和密钥:

websockify -v --cert=server.crt --key=server.key 8888 192.168.1.11:5900

2. 显式确认服务器身份(仅限测试环境)

在测试环境下,你可以在serververification事件回调中调用event.accept()手动确认服务器身份,这样就能继续建立连接,后续除非服务器身份变更,否则不会再触发该事件:

this.rbf.addEventListener('serververification', (event) => {
    // 仅限测试环境使用,生产环境禁用
    event.accept();
});

注意:生产环境绝对不要使用这种方式,会暴露中间人攻击风险。

3. 采用非加密连接(仅限内网测试)

如果是在完全可信的内网环境测试,可以使用HTTP+未加密WebSocket(ws://协议),此时noVNC不会触发服务器身份验证事件。但这种方式数据明文传输,严禁在公网或不可信环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:07:11