升级requests至2.32.2后python-keycloak遇SSL证书验证失败求助
问题分析与解决方案
requests版本变更的影响
requests 2.32.x版本确实对SSL证书验证逻辑做了调整,核心变化包括:
- 升级了内置的Mozilla CA证书 bundle,原本被旧版本默认信任的自签名/内部CA证书,可能不再被新版本认可
- 收紧了证书链的验证规则,修复了旧版本中存在的宽松验证逻辑,现在会严格检查证书链的完整性
这就是你升级后触发SSLCertVerificationError的直接原因——旧版本requests可能默认绕过了Keycloak自签名证书的部分验证,新版本则严格执行了标准验证流程。
修复方案
方案1:信任自定义CA证书(推荐生产环境)
将Keycloak的自签名CA证书加入请求信任列表:
- 导出Keycloak的CA证书(可从Keycloak服务器
conf/目录获取,或通过浏览器访问Keycloak页面后导出证书) - 初始化
KeycloakOpenID时,通过verify参数指定证书路径:
keycloak_openid = KeycloakOpenID( server_url=KEYCLOAK_URL, client_id="dashboard-app", realm_name="dashboard", client_secret_key=_KEYCLOAK_SECRET_KEY_, verify="/path/to/keycloak-ca.crt" )
如果该CA证书已添加到系统全局信任库,直接保持verify=True(默认值)即可,requests会自动读取系统信任的证书。
方案2:临时禁用SSL验证(仅测试环境)
测试环境下可临时关闭验证,但生产环境绝对禁止:
keycloak_openid = KeycloakOpenID( server_url=KEYCLOAK_URL, client_id="dashboard-app", realm_name="dashboard", client_secret_key=_KEYCLOAK_SECRET_KEY_, verify=False )
注意:禁用验证会使请求暴露在中间人攻击风险下。
方案3:升级python-keycloak版本
python-keycloak 4.0.0发布于2021年,对高版本requests的适配可能存在不足。尝试升级到最新稳定版(当前为4.5.x),新版本大概率修复了与requests 2.32+的兼容性问题:
pip install --upgrade python-keycloak
内容的提问来源于stack exchange,提问作者Dirk
相关产品推荐
相关产品推荐

