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

Superset与Keycloak HTTPS集成出现SSL证书校验失败如何解决?

问题根因

该错误本质是Superset依赖的Python HTTP客户端(requests/urllib3库)请求Keycloak的HTTPS接口时,无法校验SSL证书的签发方合法性。手动将证书导入系统CA存储不生效的核心原因是:Python默认不会读取系统的CA证书目录,而是优先使用certifi依赖包内置的CA证书集合。

排查步骤
  • 先验证系统层证书是否生效:进入Superset容器执行curl -v https://<你的Keycloak服务域名>/auth,如果curl同样返回证书校验错误,说明系统CA安装未成功,请检查挂载的根证书是否为PEM格式、后缀是否为.crt、执行update-ca-certificates时是否有成功添加证书的日志输出。
  • 如果curl访问正常,验证Python层的证书校验情况:容器内执行python3 -c "import requests; print(requests.get('https://<你的Keycloak服务域名>/auth'))",如果返回和报错一致的SSL校验失败信息,即可确认是Python运行环境的证书问题。
  • 确认你的Keycloak SSL证书是否为自签名证书,或者由私有CA签发,这类证书默认不会包含在certifi的内置CA集合中。
解决方案

方案1:自定义CA导入certifi内置证书集合(生产环境推荐)

  1. 首先在Superset容器内执行以下命令,找到certifi的CA证书 bundle 路径:
    python3 -c "import certifi; print(certifi.where())"
    通常路径为/usr/local/lib/python3.<x>/site-packages/certifi/cacert.pem(为你容器内的Python小版本号)
  2. 将你的根证书PEM内容追加到该文件末尾即可,容器部署场景可以直接通过挂载替换该文件,例如docker-compose中添加挂载配置:
    ./你的根证书.crt:/usr/local/lib/python3.<x>/site-packages/certifi/cacert.pem

方案2:通过环境变量指定自定义CA路径(生产环境推荐)

无需修改内置证书文件,直接给Superset容器添加以下两个环境变量即可:

REQUESTS_CA_BUNDLE=/容器内根证书挂载路径/rootCA.crt
SSL_CERT_FILE=/容器内根证书挂载路径/rootCA.crt

两个变量会被requests和urllib3库自动读取,优先使用指定的CA文件做证书校验,只需提前将根证书挂载到容器对应路径即可。

方案3:关闭SSL校验(仅临时调试使用,禁止生产环境使用)

如果仅做本地调试,可以通过配置关闭SSL校验逻辑,在superset_config.py中添加如下配置:

# 允许OAuth2走非安全传输,关闭全局SSL校验警告
import os
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
import requests
requests.packages.urllib3.disable_warnings()

# 在原有OAUTH_PROVIDERS配置的client_kwargs中添加verify=False参数
OAUTH_PROVIDERS = [
    {
        'name': 'keycloak',
        # 其余原有配置保持不变
        'remote_app': {
            # 其余原有配置保持不变
            'client_kwargs': {
                'scope': 'openid email profile',
                'verify': False # 关闭当前OAuth客户端的SSL校验
            },
        },
    }
]

内容的提问来源于stack exchange,提问作者Manish Bansal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:15:01