2016-10-11 6 views
2

Я пытаюсь загрузить файл Python в PyPi через twine upload <file>, но я получаю сообщение об ошибке SSL:питон проверки сертификата 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 answer to similar problem (то есть экспортировать сертификат, шпагат пытается проверить - по-видимому, что из pypi.python.org - и затем сказать шпагат, чтобы использовать его):

  1. от chrome, я пошел к https://pypi.pythong.org, щелкнул замок рядом с URL-адресом, затем Details, View Certificate, Details, Copy to File. Это создало файл .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, как описано в Opting Out: я заменил линию _create_default_https_context = create_default_context на _create_default_https_context = _create_unverified_context. Повторная перезагрузка команды twine снова завершилась с исходной ошибкой CERTIFICATE_VERIFY_FAILED.

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

ответ

0

Вы можете передать флаг --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 :)

+0

Thx @karanja для ответа. Но похоже, что это подтверждает, что шаги с 1 по 3 моего сообщения должны были работать, но, возможно, я не сделал шаг 2 правильно? – Schollii

+0

@Schollii ты за корпоративным брандмауэром? Если да, имеете ли вы доступ к сертификатам https ssl? Вам нужно преобразовать файл '.cer' в файл' .pem'. –

+0

, так что мне нужно получить сертификаты https ssl от наших ИТ? поэтому это набор сертификатов ssl, а не только для этого сайта, с которым у меня возникают проблемы? – Schollii