Certifi: как использовать SSL-сертификат в Python

Python certifi предоставляет «тщательно отобранную коллекцию сертификатов Mozilla для проверки достоверности сертификатов SSL при проверке подлинности хостов TLS». Она была взята из проекта Requests.

Установка certifi в Python

Чтобы установить пакет сертификации Python, введите следующую команду.

Если вы уже установили библиотеку requests, есть 100% вероятность того, что библиотека certifi также установлена, но вы должны это проверить. Библиотека запросов Python использует свой собственный файл CA по умолчанию или будет использовать пакет сертификатов пакета certifi, если он установлен.

Несмотря на то, что вы можете передать свой собственный пакет CA в запросы, чтобы переопределить по умолчанию, несколько сторонних пакетов используют запросы под капотом, и вы не можете быть уверены, что использовали пользовательское расположение для проверки.

Как установить сертификат Python в Windows

Чтобы установить сертификат Python в Microsoft Windows:

  1. Введите cmd в строке поиска и нажмите Enter, чтобы открыть командную строку.
  2. Введите python3 -m pip install certifi в командной строке и снова нажмите Enter. Это устанавливает certifi для установки Python по умолчанию.
  3. Предыдущая команда может не работать, если на вашем компьютере установлены версии Python 2 и 3. В этом случае попробуйте выполнить команду pip3 install certifi. Теперь он установлен в вашей системе.

Как установить сертификат Python в Linux

Чтобы установить сертификат Python в Linux:

  1. Сначала откройте терминал или оболочку в вашей ОС Linux.
  2. Введите python3 -m pip install certifi и нажмите Enter.
  3. Если это не сработает, попробуйте использовать эту команду: pip3 install certifi или python -m pip install certifi.

Python certifi.where()

Функция certifi.where() помогает нам найти ссылку на установленный пакет центра сертификации(CA) в Python.

Выход

Вы также можете найти путь cacert.pem из командной строки, используя следующую команду.

Браузеры и центры сертификации пришли к выводу, что 1024-битные ключи неприемлемо слабы для сертификатов, особенно для корневых.

По той же причине Mozilla удаляет любой слабый (т. е. 1024-битный ключ) сертификат из своего пакета, заменив его эквивалентным надежным(т. е. 2048-битным ключом или выше) сертификатом от того же ЦС.

Примечание. Certifi не поддерживает добавление/удаление или изменение содержимого хранилища доверенных сертификатов ЦС.

Если вы поместите дополнительные сертификаты в файл пакета PEM, вы можете использовать эти две переменные среды для перезаписи хранилищ сертификатов по умолчанию, используемых Python OpenSSL и Requests.

Тем не менее, мы можем быстро проверить это при запуске наших скриптов и автоматически обновить пакет ЦС с помощью данного ЦС, если это необходимо.

Во-первых, запишите свой собственный ЦС и сохраните его как PEM; вы можете преобразовать его с помощью OpenSSL.

Если у вас есть только .cer, .crt или .derenSSL.

Если у вас есть несколько пользовательских промежуточных или корневых файлов, вы можете добавить их все в один файл .pem при преобразовании. Перетащите файл certificate.pem в корень вашего проекта.

Теперь попробуем запросить целевой URL. В нашем случае это GitHub API, и если мы столкнемся с ошибкой сертификата, обновите пакет ЦС, используемый Certifi.

Выход

Как исправить ModuleNotFoundError: нет модуля с именем «certifi»

Ошибка ModuleNotFoundError: нет модуля с именем «certifi» возникает, если либо модуль certifi установлен неправильно, либо вы забыли установить пакет certifi в Python.

Чтобы исправить ошибку ModuleNotFoundError: нет модуля с именем «certifi» в Python, сначала установите библиотеку certifi, используя «python3 -m pip install certifi» или «pip install certifi» в оболочке или терминале вашей операционной системы.

Оцените статью

Автор статей и разработчик, делюсь знаниями.

Программирование на Python