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 验证,但生产环境必须用域名。
相关推荐
XUEYUAN52123 天前
ASN 自治系统号风控:平台如何通过 IP 所属自治域批量识别代理流量
python·网络协议·http·网络安全·socks5
CHENKONG_CK3 天前
破解制鞋打磨痛点:RFID赋能去毛刺工序自动化升级
网络·单片机·嵌入式硬件·网络协议·tcp/ip
2501_916007473 天前
苹果商店iOS应用上架费用全面解析:开发者计划与审核费用计算
android·ios·小程序·https·uni-app·iphone·webview
Lsetea3 天前
证书没到期却报certificate has expired:OpenSSL定位中间证书与系统时间
运维·https·ssl证书·openssl·证书链
z落落3 天前
C#UDP+串口服务端+UDP 客户端(含 CRC16 校验)
网络·网络协议·udp
2501_916008893 天前
如何实现iOS App代码混淆:SwiftShield使用指南
android·ios·小程序·https·uni-app·iphone·webview
SDWAN_Cheap3 天前
HTTPS到底加密了什么?
https·数据加密
曼巴UE53 天前
UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式
网络·c++·网络协议·学习·rpc·ue5
开开心心就好3 天前
安卓手写文字生成工具,多种纸张一直免费
网络·网络协议·tcp/ip·leetcode·智能手机·电脑·模拟退火算法
2501_916008893 天前
怎么用 Godot 导出 iOS 应用并上架 App Store?签名字段该填什么?
android·ios·小程序·https·uni-app·iphone·webview