mirror of
https://github.com/python/cpython.git
synced 2025-08-22 09:45:06 +00:00
bpo-35925: Skip SSL tests that fail due to weak external certs. (GH-13124)
Modern Linux distros such as Debian Buster have default OpenSSL system configurations that reject connections to servers with weak certificates by default. This causes our test suite run with external networking resources enabled to skip these tests when they encounter such a failure. Fixing the network servers is a separate issue.
This commit is contained in:
parent
7b3a028c35
commit
2cc0223f43
3 changed files with 50 additions and 11 deletions
|
@ -4,6 +4,7 @@ import io
|
|||
import itertools
|
||||
import os
|
||||
import array
|
||||
import re
|
||||
import socket
|
||||
import threading
|
||||
|
||||
|
@ -1619,14 +1620,30 @@ class HTTPSTest(TestCase):
|
|||
# We feed the server's cert as a validating cert
|
||||
import ssl
|
||||
support.requires('network')
|
||||
with support.transient_internet('self-signed.pythontest.net'):
|
||||
selfsigned_pythontestdotnet = 'self-signed.pythontest.net'
|
||||
with support.transient_internet(selfsigned_pythontestdotnet):
|
||||
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
|
||||
self.assertEqual(context.verify_mode, ssl.CERT_REQUIRED)
|
||||
self.assertEqual(context.check_hostname, True)
|
||||
context.load_verify_locations(CERT_selfsigned_pythontestdotnet)
|
||||
h = client.HTTPSConnection('self-signed.pythontest.net', 443, context=context)
|
||||
h.request('GET', '/')
|
||||
resp = h.getresponse()
|
||||
try:
|
||||
h = client.HTTPSConnection(selfsigned_pythontestdotnet, 443,
|
||||
context=context)
|
||||
h.request('GET', '/')
|
||||
resp = h.getresponse()
|
||||
except ssl.SSLError as ssl_err:
|
||||
ssl_err_str = str(ssl_err)
|
||||
# In the error message of [SSL: CERTIFICATE_VERIFY_FAILED] on
|
||||
# modern Linux distros (Debian Buster, etc) default OpenSSL
|
||||
# configurations it'll fail saying "key too weak" until we
|
||||
# address https://bugs.python.org/issue36816 to use a proper
|
||||
# key size on self-signed.pythontest.net.
|
||||
if re.search(r'(?i)key.too.weak', ssl_err_str):
|
||||
raise unittest.SkipTest(
|
||||
f'Got {ssl_err_str} trying to connect '
|
||||
f'to {selfsigned_pythontestdotnet}. '
|
||||
'See https://bugs.python.org/issue36816.')
|
||||
raise
|
||||
server_string = resp.getheader('server')
|
||||
resp.close()
|
||||
h.close()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue