#Что означает ошибка
CERTIFICATE_VERIFY_FAILED
CERTIFICATE_VERIFY_FAILED при установке пакетов через pip указывает на то, что pip не доверяет сертификату сервера. Самая частая причина — корпоративный прокси или антивирус, который подменяет сертификат своим корневым, которого нет в хранилище Python.
Решением является добавление нужного корневого сертификата, а не отключение проверки.
Покажем, как найти и подключить сертификат.
Ошибка возникает из-за прокси, антивируса или устаревших корневых сертификатов. Обновите pip и certifi, проверьте корпоративный прокси.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Корпоративный прокси | В цепочке сертификата виден подтверждённый корпоративный центр | Получите доверенный CA bundle по внутреннему каналу и настройте pip. |
| Антивирус | TLS-сертификат меняется локальной программой фильтрации HTTPS | Уточните у администратора разрешённый способ доверия, не отключайте антивирус. |
| Устаревшие сертификаты | Системное хранилище устарело либо pip использует другую цепочку доверия | Проверьте сертификаты ОС и версии pip/Python на поддерживаемой платформе. |
| Неверное время | Дата/время системы заметно неверны и браузер сообщает о сроке действия | Исправьте дату/часовой пояс и повторите проверенный HTTPS-запрос. |
#Пошаговое решение
- Определите, кто выдал сертификат pypi.orgВ терминале активированного окружения запустите
python -m pip --versionи запишите версию Python/pip. Откройте в браузереhttps://pypi.org, нажмите значок сведений о соединении возле адреса → «Сертификат» (маршрут зависит от браузера) и проверьте имя выдавшего сертификат центра. Если браузер тоже сообщает ошибку доверия, сначала проверьте точную дату/время ОС и обратитесь к системному администратору. Не вводите пароли, не переходите на HTTP и не отключайте проверку сертификатов. - Экспортируйте корневой сертификат в PEMЕсли на компьютере используется корпоративный HTTPS-прокси, спросите у администратора, должна ли подмена сертификатов происходить и какой корневой сертификат доверен организацией. Не экспортируйте случайный сертификат с интернет-страницы: нужен проверенный корневой сертификат организации, полученный по доверенному внутреннему каналу. На Windows откройте «Пуск» →
certmgr.mscдля просмотра пользовательских корневых центров; для системного хранилища требуются полномочия администратора. Импортировать неподтверждённый корневой сертификат крайне опасно. - Укажите его в pipЕсли администратор выдал подтверждённый PEM-набор доверенных корневых сертификатов (bundle), положите файл в защищённый каталог, например
C:\certs\company-ca-bundle.pem, и проверьте его существование. В PowerShell применитеpy -m pip install --cert C:\certs\company-ca-bundle.pem ИМЯ_ПАКЕТАдля разовой проверки, заменив путь и имя на реальные. Параметр--certдолжен указывать на подходящий сертификатный набор, а не просто на сертификат сайта; изменение глобальной настройки pip затрагивает все установки этого пользователя. При успехе согласуйте постоянную настройку с администратором. - Либо установите pip-system-certsНа Python 3.10+ и pip 24.2+ штатно используются системное хранилище сертификатов вместе с certifi; на более старых выпусках поведение отличается. Поэтому сначала проверьте версии и доверие системного хранилища, а не устанавливайте дополнительный пакет
pip-system-certsбез диагноза. Если обновление pip требуется для исправления, выполните его только из доверенного источника через рабочее соединение; не используйте небезопасную установку pip для того, чтобы исправить ошибки доверия pip. Для Linux уточните состояние системного пакетаca-certificatesчерез администратора ОС. - Используйте trusted-host только временноПосле корректировки доверия повторите исходную установку
python -m pip install ИМЯ_ПАКЕТАбез обходных флагов. Успех — скачивание из ожидаемого индекса безCERTIFICATE_VERIFY_FAILED. Если ошибка сохраняется, запишите точное имя хоста из ошибки (pypi.org,files.pythonhosted.orgлибо внутренний индекс), версию Python/pip, сведения о прокси и сертификатной цепочке без секретов. Не применяйте--trusted-host: это выключает важную проверку подлинности соединения и не является рекомендованным исправлением.
#Если не помогло
Не отключайте проверку SSL (--trusted-host) без необходимости: это небезопасно.
#Диагностика
Откройте https://pypi.org в браузере и посмотрите издателя сертификата (значок замка → сертификат). Если издатель — ваша организация или антивирус, это может указывать на корпоративную проверку TLS; подтвердите её законность у администратора. Проверьте цепочку: openssl s_client -connect pypi.org:443 -showcerts. Узнайте, откуда pip берёт сертификаты: python -m pip config list и python -c "import certifi; print(certifi.where())".
#Подключение корневого сертификата
Если организация использует TLS-инспекцию, получите проверенный PEM-набор доверенных CA от администратора, а затем настройте его через --cert/PIP_CERT для конкретного окружения. Не редактируйте файл certifi вручную: обновление пакета заменит его, а неправильный CA нарушит проверку соединений. Установка pip-system-certs как первый шаг не нужна: pip 24.2+ при Python 3.10+ уже использует системное хранилище вместе с certifi.
#Аварийный вариант
Отключать проверку TLS с помощью --trusted-host для скачивания и установки пакетов не следует. Проверьте дату системы, актуальную версию pip, доверенные сертификаты и настройки корпоративного прокси. Обновления pip/certifi выполняйте лишь после восстановления проверенного HTTPS-соединения.
# Диагностический вариант для Windows с подтверждённым CA bundle# Путь и имя пакета обязательно заменить на реальные; НЕ запускать без файлаpy -m pip install --cert C:\certs\company-ca-bundle.pem requestsКоманда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.