summaryrefslogtreecommitdiffstats
path: root/Lib/urllib
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2022-06-26 08:43:21 (GMT)
committerGitHub <noreply@github.com>2022-06-26 08:43:21 (GMT)
commit37118fa2e3af133b0cf4935b008c7be7f5d07f68 (patch)
tree1a09f05abbbe6db6b52c5c544f55c66641f153f6 /Lib/urllib
parente87ada48a9e5d9d03f9759138869216df0d7383a (diff)
downloadcpython-37118fa2e3af133b0cf4935b008c7be7f5d07f68.zip
cpython-37118fa2e3af133b0cf4935b008c7be7f5d07f68.tar.gz
cpython-37118fa2e3af133b0cf4935b008c7be7f5d07f68.tar.bz2
gh-94172: urllib.request avoids deprecated key_file/cert_file (#94232)
The urllib.request module no longer uses the deprecated key_file and cert_file parameter of the http.client module.
Diffstat (limited to 'Lib/urllib')
-rw-r--r--Lib/urllib/request.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 7878daa..1761e95 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -1990,9 +1990,17 @@ class URLopener:
if _have_ssl:
def _https_connection(self, host):
- return http.client.HTTPSConnection(host,
- key_file=self.key_file,
- cert_file=self.cert_file)
+ if self.key_file or self.cert_file:
+ http_version = http.client.HTTPSConnection._http_vsn
+ context = http.client._create_https_context(http_version)
+ context.load_cert_chain(self.cert_file, self.key_file)
+ # cert and key file means the user wants to authenticate.
+ # enable TLS 1.3 PHA implicitly even for custom contexts.
+ if context.post_handshake_auth is not None:
+ context.post_handshake_auth = True
+ else:
+ context = None
+ return http.client.HTTPSConnection(host, context=context)
def open_https(self, url, data=None):
"""Use HTTPS protocol."""