最直接、能立刻验证 8888 端口 WSS 服务是否正常的排查方法,按顺序做就行:
1. 先确认端口本身监听正常
bash
ss -tulpn | grep 8888
看到有 LISTEN 且是 0.0.0.0:8888 或 :::8888 才对外可用。
2. 测试端口是否能连通(TCP 层)
bash
telnet 你的服务器IP 8888
或
bash
nc -zv 你的服务器IP 8888
- 连通成功:说明端口开放、防火墙放行
- 连不上:优先查 防火墙/安全组(阿里云/腾讯云安全组一定要开8888)
3. 直接测试 WSS 服务是否正常(最关键)
方法A:用 wscat 工具(推荐)
安装:
bash
npm install -g wscat
测试:
bash
wscat -c wss://你的域名:8888/xxx
- 连上不报错 → WSS 正常
- 报错
Error: connect ETIMEDOUT→ 端口/防火墙不通 - 报错
SSL certificate invalid→ 证书有问题
4. 浏览器在线工具快速测(不用装软件)
打开任意在线 WebSocket 测试工具:
- 地址填:
wss://你的域名:8888 - 点连接
- 连上 → 正常
- 失败 → 看浏览器 F12 Console 报错
5. 常见 WSS 8888 不通的原因
- 云服务器安全组没放行 8888(最常见)
- 服务器防火墙 firewalld/ufw 没开 8888
- WSS 服务只监听
127.0.0.1,没对外0.0.0.0 - SSL 证书不匹配/过期/不被信任
- 后端 WebSocket 服务挂了
你把这3个信息发我,我能直接帮你定位问题:
- 你的 WSS 完整地址(wss://xxx:8888/...)
ss -tulpn | grep 8888结果- 浏览器 F12 里的报错截图/文字
WSS遇到的这个报错 Hostname/IP does not match certificate's altnames,核心问题是:你用 IP 地址(49.8.*.202)访问 WSS 服务,但 SSL 证书是绑定在域名上的,证书里没有包含这个 IP 地址,导致 SSL 验证失败。
1. 先解释报错的本质
SSL/TLS 证书(WSS 依赖的证书)是和域名绑定 的(比如 wss://yourdomain.com:8888),而不是和 IP 绑定。当你直接用 wss://49.8.*.202:8888 访问时,客户端会校验:证书里的"允许访问的域名/IP列表(altnames)"是否包含 49.8.*.202,显然你的证书里只有域名,没有这个 IP,所以直接报错。
2. 解决方法(按优先级排序,推荐第一种)
方法1:用域名访问(最标准、推荐)
这是解决该问题的根本方法,符合 SSL 证书的设计逻辑:
-
确保你的域名(比如
ws.yourdomain.com)已经解析到49.8.*.202; -
把测试 WSS 的地址从
wss://49.8.*.202:8888改成wss://ws.yourdomain.com:8888; -
重新用
wscat或浏览器测试:bashwscat -c wss://ws.yourdomain.com:8888
方法2:临时跳过 SSL 验证(仅测试用,不推荐生产环境)
如果只是临时测试,不想改域名,可以让客户端跳过 SSL 证书校验:
-
用
wscat测试时加--no-check参数:bashwscat -c wss://49.8.*.202:8888 --no-check -
浏览器测试:无法直接跳过(浏览器安全机制限制),所以优先用方法1。
方法3:给证书添加 IP 作为备用名称(进阶)
如果必须用 IP 访问,需要重新申请/修改 SSL 证书,把 49.8.*.202 加入证书的 Subject Alternative Name (SAN) 字段(即 altnames)。
- 免费证书(如 Let's Encrypt):需要用支持 IP 证书的工具申请(Let's Encrypt 仅支持特定场景的 IP 证书);
- 付费证书:联系证书服务商添加 IP 到 SAN 列表,重新签发证书。
3. 验证是否解决
执行以下命令,若能正常连接且无证书不匹配报错,说明问题解决:
bash
# 用域名测试(推荐)
wscat -c wss://你的域名:8888
# 或临时跳过验证测试 IP
wscat -c wss://49.8.*.202:8888 --no-check
总结
- 核心问题:SSL 证书绑定域名,用 IP 访问时证书校验不通过;
- 最优解:改用证书绑定的域名访问 WSS 服务,而非直接用 IP;
- 临时测试:用
wscat --no-check跳过 SSL 验证,但生产环境必须用域名。