Bug description

I am using Helm chart version 0.15.0 to deploy Superset version 5.0.0 and am encountering the following error:

2025-08-11 08:42:56,797:ERROR:flask_appbuilder.security.views:Error authorizing OAuth access token: HTTPSConnectionPool(host='zitadel.**.devops.*.com', port=443): Max retries exceeded with url: /oauth/v2/token (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1016)')))

I have placed my certificate in /usr/local/lib/python3.11/site-packages/certifi. Please let me know if there are any changes required in the certificate path for the OIDC setup.

Screenshots/recordings

No response

Superset version

5.0.0

Python version

3.11

Node version

18 or greater

Browser

Chrome

Additional context

No response

Checklist

  • [x] I have searched Superset docs and Slack and didn't find a solution to my problem.
  • [x] I have searched the GitHub issue tracker and didn't find a similar bug report.
  • [x] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

Comment From: dosubot[bot]

Placing your certificate in /usr/local/lib/python3.11/site-packages/certifi does not make it trusted by Python’s requests library unless you rebuild the certifi bundle, which is not recommended or reliable in containerized deployments. The supported way to add a custom CA for outbound HTTPS (including OIDC/OAuth) in Superset is to mount your CA bundle into the container and set the REQUESTS_CA_BUNDLE environment variable to its path. This tells Python requests to use your CA for SSL verification.

In a Helm/Kubernetes deployment, you should: 1. Mount your custom CA bundle (e.g., as a Kubernetes Secret or ConfigMap) into the Superset container, for example at /etc/ssl/certs/my-ca-bundle.crt. 2. Set the REQUESTS_CA_BUNDLE environment variable in your Helm values to point to that file.

Example Helm values override:

extraEnv:
  - name: REQUESTS_CA_BUNDLE
    value: /etc/ssl/certs/my-ca-bundle.crt

extraVolumes:
  - name: custom-ca
    secret:
      secretName: my-custom-ca-secret

extraVolumeMounts:
  - name: custom-ca
    mountPath: /etc/ssl/certs/my-ca-bundle.crt
    subPath: my-ca-bundle.crt
    readOnly: true

This approach is necessary because Superset delegates SSL verification to Python requests, which only honors the REQUESTS_CA_BUNDLE variable for custom trust stores—there is no Superset-specific config for this use case.

If you still see SSL errors after this, check for DNS issues inside the pod (sometimes /etc/resolv.conf is misconfigured in Kubernetes and can cause misleading SSL errors) source.

Let me know if you need a more detailed example for your Helm chart or have questions about mounting the CA bundle.

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X