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

WSS连接127.0.0.1:8080失败,求助排查TLS/SSL证书配置问题

排查WSS连接失败的具体方向

1. 验证证书的SAN字段是否包含目标IP

你用mkcert localhost 127.0.0.1 ::1生成了证书,但需要确认证书实际包含127.0.0.1作为Subject Alternative Name(SAN):

  • 进入Python项目的certs目录,执行终端命令:
    openssl x509 -in cert.pem -text -noout | grep -A 10 "Subject Alternative Name"
    
  • 输出中必须显示IP Address:127.0.0.1,如果缺失,重新生成证书并替换现有文件。

2. 查看浏览器控制台的详细错误信息

浏览器给出的错误提示过于简略,打开开发者工具(F12):

  • 在网络标签中找到WSS请求,查看失败的具体原因(比如NET::ERR_CERT_COMMON_NAME_INVALID、NET::ERR_SSL_PROTOCOL_ERROR等)
  • 控制台标签会显示TLS握手失败的详细日志,这是定位问题的核心依据。

3. 调整Python SSL上下文配置

websockets库对SSL上下文有特定要求,尝试补充配置:

ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
# 强制使用现代TLS版本和兼容加密套件
ssl_context.min_version = ssl.TLSVersion.TLS_1_2
ssl_context.set_ciphers('ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384')
ssl_context.load_cert_chain(ssl_cert, keyfile=ssl_key)

4. 测试端口监听与直接连通性

  • 确认Python服务确实在监听8080端口:
    # Linux/macOS
    lsof -i :8080
    # Windows
    netstat -ano | findstr :8080
    
  • 用wscat工具绕开浏览器测试WSS连接:
    先安装工具:npm install -g wscat,再执行:
    wscat -c wss://127.0.0.1:8080
    
    工具会输出具体错误,比如证书不被信任或连接超时。

5. 检查证书文件权限

确保Python进程能读取证书文件:

  • Linux/macOS下执行:
    chmod 644 certs/cert.pem certs/key.pem
    
  • Windows右键证书文件,确认当前用户拥有读取权限。

6. 重新确认mkcert根证书信任状态

执行mkcert -install,强制将根证书安装到系统和浏览器信任列表;之后在浏览器的证书设置中(如Chrome的chrome://settings/certificates),检查是否存在mkcert生成的根证书。

内容的提问来源于stack exchange,提问作者Sannan - Move to Codidact

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:00:11