Проверка сертификата Python SSL завершается неудачно в некоторых командах распространения

Я пытаюсь загрузить файл Python в PyPi через twine upload <file> но я получаю ошибку SSL:

C:\pypubsub>twine upload dist\PyPubSub-4.0.0rc1-py3-none-any.whl
Uploading distributions to https://upload.pypi.org/legacy/
Uploading PyPubSub-4.0.0rc1-py3-none-any.whl
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

Другие скрипты Python, использующие SSL, имеют такую ​​же проблему, например

  • с python setup.py bdist_wheel upload <my_package>
  • с pip install <any_package>; но там я могу добавить --trusted-host pypi.python.org любому pip install Команда и установка и загрузка зависимостей будут успешными

Это происходит на моем корпоративном ноутбуке, будь то дома или на работе, но не на моем личном ноутбуке.

Чтобы обойти это, я в основном пытался ответить SO на аналогичную проблему (то есть экспортировать сертификат, который пытается проверить шпагат - предположительно, на pypi.python.org - и затем сказать шпагу использовать его):

  1. из chrome я перешел на https://pypi.pythong.org/, щелкнул замок рядом с URL-адресом, затем "Детали", "Просмотр сертификата", "Сведения", "Копировать в файл". Это сгенерировало файл.CER.
  2. Я использовал SSL Converter для преобразования файла.CER из формата DER в формат PEM. Это создало файл.CRT.
  3. Я побежал как twine upload <my_package> --cert <path to CRT file>; на этот раз ошибка SSL была SSLError: [SSL] PEM lib (_ssl.c:2846),

Затем я попытался отказаться от проверки сертификата сервера путем исправления c:\Python35\lib\ssl.py как описано в Отключении: я заменил линию _create_default_https_context = create_default_context от _create_default_https_context = _create_unverified_context, Повторный запуск twine Снова произошла ошибка команды с исходной ошибкой CERTIFICATE_VERIFY_FAILED.

Я не очень хорошо знаком с сертификатами, так что теперь я в растерянности, что еще можно попробовать.

1 ответ

Вы можете передать --cert флаг, чтобы сказать twine какой сертификат использовать.

twine upload dist\PyPubSub-4.0.0rc1-py3-none-any.whl --cert <path-to-.pem-file>

Чтобы скрыть .cer к .pem файл, сделайте следующее.

openssl x509 -inform der -in certificate.cer -out certificate.pem

--cert Флаг имеет важное значение для тех, кто использует пользовательские сертификаты SSL. Если вы используете корпоративную сеть, вышеприведенное исправление должно помочь вам. Спросите своего администратора для SSL-сертификатов:)

Другие вопросы по тегам