|
|
@ -985,6 +985,18 @@ def make_HTTPS_handler(params, **kwargs):
|
|
|
|
context.options |= 4 # SSL_OP_LEGACY_SERVER_CONNECT
|
|
|
|
context.options |= 4 # SSL_OP_LEGACY_SERVER_CONNECT
|
|
|
|
# Allow use of weaker ciphers in Python 3.10+. See https://bugs.python.org/issue43998
|
|
|
|
# Allow use of weaker ciphers in Python 3.10+. See https://bugs.python.org/issue43998
|
|
|
|
context.set_ciphers('DEFAULT')
|
|
|
|
context.set_ciphers('DEFAULT')
|
|
|
|
|
|
|
|
elif sys.version_info < (3, 10) and ssl.OPENSSL_VERSION_INFO >= (1, 1, 1):
|
|
|
|
|
|
|
|
# Backport the default SSL ciphers and minimum TLS version settings from Python 3.10 [1].
|
|
|
|
|
|
|
|
# This is to ensure consistent behavior across Python versions, and help avoid fingerprinting
|
|
|
|
|
|
|
|
# in some situations [2][3].
|
|
|
|
|
|
|
|
# Python 3.10 only supports OpenSSL 1.1.1+ [4]. Because this change is likely
|
|
|
|
|
|
|
|
# untested on older versions, we only apply this to OpenSSL 1.1.1+ to be safe.
|
|
|
|
|
|
|
|
# 1. https://github.com/python/cpython/commit/e983252b516edb15d4338b0a47631b59ef1e2536
|
|
|
|
|
|
|
|
# 2. https://github.com/yt-dlp/yt-dlp/issues/4627
|
|
|
|
|
|
|
|
# 3. https://github.com/yt-dlp/yt-dlp/pull/5294
|
|
|
|
|
|
|
|
# 4. https://peps.python.org/pep-0644/
|
|
|
|
|
|
|
|
context.set_ciphers('@SECLEVEL=2:ECDH+AESGCM:ECDH+CHACHA20:ECDH+AES:DHE+AES:!aNULL:!eNULL:!aDSS:!SHA1:!AESCCM')
|
|
|
|
|
|
|
|
context.minimum_version = ssl.TLSVersion.TLSv1_2
|
|
|
|
|
|
|
|
|
|
|
|
context.verify_mode = ssl.CERT_REQUIRED if opts_check_certificate else ssl.CERT_NONE
|
|
|
|
context.verify_mode = ssl.CERT_REQUIRED if opts_check_certificate else ssl.CERT_NONE
|
|
|
|
if opts_check_certificate:
|
|
|
|
if opts_check_certificate:
|
|
|
@ -1982,12 +1994,13 @@ def system_identifier():
|
|
|
|
with contextlib.suppress(OSError): # We may not have access to the executable
|
|
|
|
with contextlib.suppress(OSError): # We may not have access to the executable
|
|
|
|
libc_ver = platform.libc_ver()
|
|
|
|
libc_ver = platform.libc_ver()
|
|
|
|
|
|
|
|
|
|
|
|
return 'Python %s (%s %s) - %s %s' % (
|
|
|
|
return 'Python %s (%s %s) - %s (%s%s)' % (
|
|
|
|
platform.python_version(),
|
|
|
|
platform.python_version(),
|
|
|
|
python_implementation,
|
|
|
|
python_implementation,
|
|
|
|
platform.architecture()[0],
|
|
|
|
platform.architecture()[0],
|
|
|
|
platform.platform(),
|
|
|
|
platform.platform(),
|
|
|
|
format_field(join_nonempty(*libc_ver, delim=' '), None, '(%s)'),
|
|
|
|
ssl.OPENSSL_VERSION,
|
|
|
|
|
|
|
|
format_field(join_nonempty(*libc_ver, delim=' '), None, ', %s'),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|