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

代理安全WebSocket向wss连接发送自签名证书时连接报错问题

问题修复方案

根因分析

  • 你当前8080端口启动的是普通HTTP服务,没有配置SSL证书,客户端用HTTPS/WSS协议访问HTTP端口,自然会触发SSL协议不匹配的报错,也就是你看到的ssl3_get_record:wrong version number错误。
  • createProxyMiddleware里的ssl配置项不是用来给代理自身配置服务端证书的,是用来配置代理向后端发起请求时用的客户端证书,你的场景不需要配这个;secure: true代表代理会严格校验后端8443服务的自签名证书,你需要额外指定信任的CA证书才不会校验失败。

修复步骤

1. 修改代理端代码

首先把代理服务改成HTTPS服务,同时补全代理校验后端证书的CA配置,修改后的代码如下:

const wsProxy = createProxyMiddleware('/', {
    target: `https://localhost:8443`,
    changeOrigin: true,
    secure: true,
    ws: true,
    // 新增:指定信任的后端CA证书,解决自签名证书校验失败问题
    ca: fs.readFileSync(path.resolve(__dirname, 'cert.pem')),
});

const app = express();
app.use(wsProxy);

// 改为用HTTPS启动代理服务,配置和后端一致的证书密钥
const proxy = https.createServer({
  cert: fs.readFileSync(path.resolve(__dirname, 'cert.pem'), 'utf-8'),
  key: fs.readFileSync(path.resolve(__dirname, 'server.key'), 'utf-8')
}, app).listen(8080);

proxy.on('upgrade', wsProxy.upgrade);

2. 验证修复效果

  • 浏览器访问https://localhost:8080,信任自签名证书后即可正常看到返回内容
  • 运行wscat -c wss://localhost:8080 --ca cert.pem即可正常建立WSS连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 01:06:03