|
|
|
@ -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证书验证失败错误 |
|
|
|
``` |
|
|
|
|