Python 3.13 игнорирует переменную среды ssl_cert_file по проекту?Python

Программы на Python
Anonymous
 Python 3.13 игнорирует переменную среды ssl_cert_file по проекту?

Сообщение Anonymous »

Я работаю в среде, в которой мы должны использовать самоподнешенный сертификат SSL (не моя вина, и я не могу ничего сделать, чтобы изменить это). < /p>
Исторически смог установить переменную среды ssl_cert_file для использования этого сертификата и urllib.request.urlopen () работает просто нормально. Это верно до Python 3.12. Однако с Python 3.13 первый сценарий ниже не может открыть указанный URL. Чтобы получить тот же результат в Python 3.13, я должен использовать второй сценарий ниже (в основном, нахождение самоподнебленного файла сертификата самостоятельно, построить SSLContext с этим файлом и передавая его Urlopen).
Код, который работает в Python

Код: Выделить всё

#!/usr/bin/env python

import os
import ssl
from urllib.request import urlopen

if __name__ == "__main__":
url = "https://docs.python.org/3.10/library/ssl.html#module-ssl"
with urlopen(url) as fh:
data = fh.read()

print(f"Retrieved {len(data)} bytes.")
< /code>
Чтобы воспроизвести это поведение в Python 3.13, я должен изменить код: < /p>
#!/usr/bin/env python

import os
import ssl
from urllib.request import urlopen

if __name__ == "__main__":
url = "https://docs.python.org/3.10/library/ssl.html#module-ssl"
cafile = os.getenv("SSL_CERT_FILE")
context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
context.load_verify_locations(cafile=cafile)
with urlopen(url, context=context) as fh:
data = fh.read()
print(f"Specifying CERT file: retrieved {len(data)} bytes.")
Мой вопрос: использование ssl_cert_file намеренно или случайно устарело в Python 3.13?


Подробнее здесь: https://stackoverflow.com/questions/791 ... -by-design

Вернуться в «Python»