Browse Source

websocket Client

origin/hotfix/hlk-flight
root 4 months ago
parent
commit
545d28050f
  1. 4
      app/core/websocket/client.py
  2. 48
      modify.md

4
app/core/websocket/client.py

@ -72,7 +72,9 @@ class WebSocketClient:
# 根据配置决定是否验证证书和主机名
if not config.websocket.ssl_verify_certificate:
ssl_context.verify_mode = ssl.CERT_NONE
if not config.websocket.ssl_verify_hostname:
# 当不验证证书时,必须同时禁用主机名检查
ssl_context.check_hostname = False
elif not config.websocket.ssl_verify_hostname:
ssl_context.check_hostname = False
self._websocket = await websockets.connect(self.url, ssl=ssl_context)

48
modify.md

@ -2,6 +2,54 @@
## 2025-08-11
### WebSocket SSL证书验证冲突修复
**问题**:WebSocket客户端连接时出现SSL配置冲突错误
```
Cannot set verify_mode to CERT_NONE when check_hostname is enabled.
```
**根本原因**:在SSL上下文中,当设置`verify_mode = ssl.CERT_NONE`时,如果`check_hostname`仍然为`True`,就会出现配置冲突。
**解决方案**:修复SSL配置逻辑,确保当不验证证书时同时禁用主机名检查
**文件变更**:
- 更新 `app/core/websocket/client.py` - 修复SSL配置冲突
**修改内容**:
```python
# 根据配置决定是否验证证书和主机名
if not config.websocket.ssl_verify_certificate:
ssl_context.verify_mode = ssl.CERT_NONE
# 当不验证证书时,必须同时禁用主机名检查
ssl_context.check_hostname = False
elif not config.websocket.ssl_verify_hostname:
ssl_context.check_hostname = False
```
**修复逻辑**:
- 当`ssl_verify_certificate = False`时,同时设置`verify_mode = ssl.CERT_NONE`和`check_hostname = False`
- 当`ssl_verify_certificate = True`但`ssl_verify_hostname = False`时,只设置`check_hostname = False`
- 确保SSL配置的一致性
**配置建议**:
```bash
# 开发环境(跳过所有SSL验证)
WEBSOCKET_SSL_VERIFY_CERTIFICATE=false
WEBSOCKET_SSL_VERIFY_HOSTNAME=false
# 生产环境(启用SSL验证)
WEBSOCKET_SSL_VERIFY_CERTIFICATE=true
WEBSOCKET_SSL_VERIFY_HOSTNAME=true
```
**注意事项**:
- 修复了SSL配置冲突问题
- 保持了配置的灵活性
- 开发环境默认跳过SSL验证
- 生产环境建议启用SSL验证
### WebSocket SSL证书验证问题修复
### WebSocket SSL证书验证问题修复
**问题**:WebSocket客户端连接时出现SSL证书验证失败错误
```

Loading…
Cancel
Save