Ошибка python easy_install с ошибкой сертификата SSL для всех пакетов

Цель: Я нахожусь в RedHat 5 и пытаюсь установить последние python и django для веб-приложения.

Я успешно установил python27 и easy_install, а wget - с openssl.

Проблема: Однако теперь, когда я пытаюсь получить что-либо из pypi.python.org, я получаю следующую ошибку:

$ sudo easy_install --verbose django
Searching for django
Reading https://pypi.python.org/simple/django/
Download error on https://pypi.python.org/simple/django/: [Errno 1] _ssl.c:507: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed -- Some packages may not be found!
Couldn't find index page for 'django' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.python.org/simple/
Download error on https://pypi.python.org/simple/: [Errno 1] _ssl.c:507: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed -- Some packages may not be found!
No local packages or download links found for django
error: Could not find suitable distribution for Requirement.parse('django')

Я попытался найти сертификат pypi.python.org с openssl s_client -showcert -connect, но не знаю, что с ним делать, где его хранить. Не много информации о Google, нужна экспертная помощь.

Спасибо!

edit: Я имел в виду wget * с openssl.

$ wget http://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz
$ tar -xzf wget-1.15.tar.gz
$ cd wget-1.15
$ ./configure --with-ssl=openssl
$ make
$ sudo make install

Я не могу заставить wget вытащить страницу:

$ wget https://pypi.python.org/simple/django/
--2014-01-21 11:18:45--  https://pypi.python.org/simple/django/
Resolving pypi.python.org (pypi.python.org)... 199.27.73.185, 199.27.74.184
Connecting to pypi.python.org (pypi.python.org)|199.27.73.185|:443... connected.
ERROR: cannot verify pypi.python.org certificate, issued by ‘/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3’:
  Unable to locally verify the issuer authority.
To connect to pypi.python.org insecurely, use `--no-check-certificate'.

Ответ 1

ваш curl cert слишком старый, попробуйте загрузить новый curl cert:

sudo wget http://curl.haxx.se/ca/cacert.pem -O /etc/pki/tls/certs/ca-bundle.crt

Ответ 2

Я нашел эту страницу после поиска решения этой проблемы. Если у кого-то есть аналогичная проблема, решение, которое я нашел, это:

В начале файла setuptools/ssl_support.py(который используется easy_install и находится внутри файла яйца:../lib/python2.7/site-packages/setuptools-3.5.1-py2.7.egg "), файлы пакетов сертификатов жестко закодированы в переменной cert_paths:

cert_paths = """
/etc/pki/tls/certs/ca-bundle.crt
/etc/ssl/certs/ca-certificates.crt
/usr/share/ssl/certs/ca-bundle.crt
/usr/local/share/certs/ca-root.crt
...etc..
"""

"easy_install" будет использовать первый файл, который существует из этого списка, так как он вызывает "find_ca_bundle". Если сертификаты в этом файле пакета сертификатов устарели, значит, easy_install завершится с ошибкой SSL. Поэтому необходимо либо обновить файл сертификата, либо изменить "cert_paths" в этом файле ssl_support.py, чтобы указать на локальный файл пакета сертификатов даты до даты.

Ответ 3

Я видел эту проблему в определенной среде: Mac OS X с macports, устанавливая пакеты в локальном пути пользователя. Решение заключалось в установке сертификатов из curl:

port install curl-ca-bundle

Btw, пока у вас не будет доказательств, большинство команд port, easy_install и pip будут терпеть неудачу из-за ошибки ssl.

Ответ 4

Попробуйте установить pip вместо установки пакета python.

Вы можете найти документацию, чтобы быстро ее установить и использовать здесь. Это обычно намного лучше, чем easy_install.

Он также использует SSL по умолчанию и с стеком сертификатов запросов (полученным из mozilla).

Вы также можете найти много информации о работе с пакетами python вообще в Python Packaging User Guide.