WSS排错检查

最直接、能立刻验证 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 不通的原因

  1. 云服务器安全组没放行 8888(最常见)
  2. 服务器防火墙 firewalld/ufw 没开 8888
  3. WSS 服务只监听 127.0.0.1,没对外 0.0.0.0
  4. SSL 证书不匹配/过期/不被信任
  5. 后端 WebSocket 服务挂了

你把这3个信息发我,我能直接帮你定位问题:

  1. 你的 WSS 完整地址(wss://xxx:8888/...)
  2. ss -tulpn | grep 8888 结果
  3. 浏览器 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 或浏览器测试:

    bash 复制代码
    wscat -c wss://ws.yourdomain.com:8888
方法2:临时跳过 SSL 验证(仅测试用,不推荐生产环境)

如果只是临时测试,不想改域名,可以让客户端跳过 SSL 证书校验:

  • wscat 测试时加 --no-check 参数:

    bash 复制代码
    wscat -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

总结

  1. 核心问题:SSL 证书绑定域名,用 IP 访问时证书校验不通过;
  2. 最优解:改用证书绑定的域名访问 WSS 服务,而非直接用 IP;
  3. 临时测试:用 wscat --no-check 跳过 SSL 验证,但生产环境必须用域名。
相关推荐
袁小皮皮不皮2 小时前
【HCIA】第二章 ipv4协议以及子网划分与集合
linux·运维·服务器·网络·网络协议·tcp/ip·信息与通信
NaclarbCSDN3 小时前
[特殊字符] HTTP 超详细详解 | 从入门到看懂浏览器请求
网络·网络协议·http
IpdataCloud5 小时前
金融风控管理如何借助IP离线库提升效率?多语言工程实践
网络·网络协议·tcp/ip
百结21413 小时前
Nginx安全防护与HTTPS部署实战笔记
nginx·安全·https
_下雨天.13 小时前
Nginx安全防护与HTTPS部署实战笔记
nginx·安全·https
kiku181814 小时前
Nginx安全
nginx·web安全·https
卢傢蕊17 小时前
Nginx安全防护与HTTPS部署实战
nginx·安全·https
带娃的IT创业者18 小时前
WeClaw 心跳与重连实战:指数退避算法如何让 WebSocket 在弱网环境下的连接成功率提升 67%?
python·websocket·网络协议·算法·fastapi·实时通信
qq_4112624219 小时前
在建立udp连接的时候,有时候能成功,有时候AT 指令返回+ERRNO:0x70
网络·网络协议·udp