-
-
Notifications
You must be signed in to change notification settings - Fork 6.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[REQ] [Python] Use urllib3 default (system) CA bundle instead of certifi #6506
Comments
There is currently no way to just tell the library to use the default system certificates without code change. Should this not be a bug report rather than a feature request? Trusting a certificate should not require changes on the code level. In addition, libraries such as requests uses environment variables, just like familiar tools such as curl do. In combination with the above issue, with urllib3, there is currently no way at all to trust a certificate from "outside python". Correct? |
Possibly, but I assumed using certifi for the default certificate store was “working as intended” so using the system default instead felt more like a feature request to me. I have no objections if a maintainer wants to change the label, however.
Yes, you're right, that's another limitation of the current behaviour. At the moment, because urllib3's |
* Use system CA by default and remove certifi See #6506 * Use system CA by default in asyncio client * Update README_onlypackage.mustache * Result of ./bin/generate-samples.sh * Add ssl_ca_cert argument for Configuration * Result of ./bin/generate-samples.sh * Remove certifi, use system CA by default
* Use system CA by default and remove certifi See OpenAPITools/openapi-generator#6506 * Use system CA by default in asyncio client * Update README_onlypackage.mustache * Result of ./bin/generate-samples.sh * Add ssl_ca_cert argument for Configuration * Result of ./bin/generate-samples.sh * Remove certifi, use system CA by default
* Use system CA by default and remove certifi See OpenAPITools/openapi-generator#6506 * Use system CA by default in asyncio client * Update README_onlypackage.mustache * Result of ./bin/generate-samples.sh * Add ssl_ca_cert argument for Configuration * Result of ./bin/generate-samples.sh * Remove certifi, use system CA by default
Is your feature request related to a problem? Please describe.
Since version 1.25.3 urllib3 defaults to using the system Certificate Authority (CA) bundle:
However, the Python client currently overrides this default, using a CA bundle from certifi, instead of the system bundle, if the user does not specify
configuration.ssl_ca_cert
.openapi-generator/modules/openapi-generator/src/main/resources/python/rest.mustache
Line 62 in db59413
Describe the solution you'd like
I propose removing certifi as a dependency, requiring urllib3 >= 1.25.3 and relying on urllib3 to handle the case when no CA bundle is specified by the user.
My main reasoning is that it’s up to urllib3 to handle the ssl verification and it would be a better separation of concerns to simply pass
configuration.ssl_ca_cert
through tourllib3.PoolManager
orurllib3.ProxyManager
’sca_certs
argument without additional logic. The generated client should still work "out of the box" for most people now that urllib3 has a default that allows for ssl verification using the system CA store.My secondary concern is having certifi as a default and required dependency in a project like this that's intended to run in a lot of different environments:
ca_certs
, so it seems quite difficult to override the certifi default with the Windows CA bundle. However, if the system CA bundle was the default then it would be easy for the user to override it withconfiguration.ssl_ca_cert=certifi.where()
if they choose.If there’s some general agreement on this I’d be happy to submit a pull request.
The text was updated successfully, but these errors were encountered: