Перейти к главному содержимому

Системные сертификаты в python requests

При запросе по https при помощи requests из скрипта на python есть несколько вариантов для проверки сертификата. За это отвечает параметр verify.

Отключение проверки

Если параметр verify равен False, то проверка будет отключена. Это в целом нехорошо, да и будут выводиться всякие предупреждения. Для закрытой локалки как временное решение может и сойдёт...

import requests

r = requests.get(url, verify=False)

Проверка по умолчанию

Если параметр verify равен True (это значение по умолчанию), то проверка будет проводиться на соответствие python-certifi.

import requests

r = requests.get(url, verify=True)

Проверка "вручную"

Можно вручную сохранить сертификаты в текстовый файл (всю цепочку, от корневого центра до сертификата сайта) и путь до этого файла дать в качестве параметра. Тогда сертификаты будут проверяться на соответствие сохраненным в этом файле.

import requests

r = requests.get(url, verify='/path/to/certfile')

Использование системных сертификатов

Обычная включенная проверка (verify=True) проверяет сертификаты "встроенные" в certifi, при этом игнорируя сертификаты установленные в системе. Иногда это неудобно. Решением данной проблемы может служить установка пакета pip-system-certs:

pip3 install pip-system-certs

После этого обычная проверка (verify=True) будет учитывать установленные в системе сертификаты.

Источник: https://stackoverflow.com/questions/50422136/python-requests-with-wincertstore