Skip to content

Commit 2eaac78

Browse files
committed
Explicitly load default certificates when creating SSL context (httpie#1583)
Requests prior to 2.32.3 always loaded the default (system-wide) set of trusted certificates into custom SSL contexts. 2.32.3 no longer does. This has broken a lot of users, but the fix is moving slowly upstream due to security considerations - see psf/requests#6730 and psf/requests#6731 . As suggested at psf/requests#6710 (comment) this can be worked around by explicitly loading the default certificates into the context. We check the method exists before calling it just to be safe, it was added in Python 3.4. Signed-off-by: Adam Williamson <[email protected]>
1 parent f4cf43e commit 2eaac78

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

Diff for: httpie/ssl_.py

+7
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ def __init__(
4848
ssl_version=ssl_version,
4949
ciphers=ciphers,
5050
)
51+
# workaround for a bug in requests 2.32.3, see:
52+
# https://github.com/httpie/cli/issues/1583
53+
if getattr(self._ssl_context, 'load_default_certs', None) is not None:
54+
# if load_default_certs is present, get_ca_certs must be
55+
# also, no need for another getattr
56+
if not self._ssl_context.get_ca_certs():
57+
self._ssl_context.load_default_certs()
5158
super().__init__(**kwargs)
5259

5360
def init_poolmanager(self, *args, **kwargs):

0 commit comments

Comments
 (0)