使用websocketd配置SSL后Edge浏览器wss连接失败求助
排查WebSocket连接失败问题
以下是针对你遇到的WebSocket connection to 'wss://127.0.0.1:8080/' failed错误的排查步骤:
1. 证书主机名不匹配(最可能原因)
从服务启动日志可见,websocketd绑定的主机名是sv2,但你在浏览器中用127.0.0.1访问。snakeoil证书的默认通用名称(CN)是你的主机名sv2,当浏览器用IP地址访问时,证书主机名与访问地址不匹配,SSL验证失败,直接阻断了WebSocket连接。
解决方法:
- 修改浏览器连接地址为
wss://sv2:8080/(需确保本地hosts文件中sv2指向127.0.0.1) - 重新生成包含
127.0.0.1作为备选名称(SAN)的自签名证书,替换现有snakeoil证书
2. 自签名证书未被Edge信任
snakeoil证书属于自签名证书,Edge默认会拒绝信任这类证书,即便主机名匹配,也可能触发连接失败。
解决方法:
- 先访问静态页面地址
https://sv2:8080/,在Edge的安全提示中选择「继续访问不安全的网站」,再尝试WebSocket连接 - 手动将snakeoil证书导入Edge的「受信任根证书颁发机构」列表
3. IPv6监听的兼容性问题
netstat显示websocketd仅监听IPv6地址(:::8080),虽然多数系统的IPv6监听会兼容IPv4,但少数环境下可能存在连接异常。
解决方法:
- 启动websocketd时添加
--address=0.0.0.0参数,强制服务监听IPv4的所有地址:
./websocketd \ --address=0.0.0.0 \ --port=8080 \ --ssl \ --sslcert="/etc/ssl/certs/ssl-cert-snakeoil.pem" \ --sslkey="/etc/ssl/private/ssl-cert-snakeoil.key" \ --staticdir=. \ ./count.sh
- 或在浏览器中用IPv6本地地址
wss://[::1]:8080/尝试连接
4. 查看浏览器控制台的详细错误
打开Edge开发者工具(F12),查看控制台和网络标签下的详细报错信息,比如证书验证失败、连接超时等,能帮你快速定位核心问题。
内容的提问来源于stack exchange,提问作者Gill-Bates
相关产品推荐
相关产品推荐

