2014-01-21 2 views
12

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

Я успешно установил 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, нужна экспертная помощь.

Спасибо!

Редактировать: Я имел в виду 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's certificate, issued by ‘/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance CA-3’: 
    Unable to locally verify the issuer's authority. 
To connect to pypi.python.org insecurely, use `--no-check-certificate'. 
+6

Выполнить эту команду, он, кажется, ваши сертификаты CA не обновляются: 'свернуться http://curl.haxx.se/ca/ cacert.pem -o/etc/pki/tls/certs/ca-bundle.crt', а затем повторите попытку. –

+0

@BurhanKhalid Spot on .. спасибо. Вы должны представить это как ответ, его вероятную борьбу каждого ... –

ответ

13

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

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

Дополнительная информация о процессе сертификации: http://curl.haxx.se/docs/sslcerts.html –

+4

Стоит отметить, что для одного из других сообщений каталог '/ etc/pki/tls/certs' не должен существовать заранее, поскольку это жестко закодированное местоположение, которое будет искать setuptools. –

+0

Сначала 'mkdir -p/etc/pki/tls/certs', если'/etc/pki/tls/certs' не существует. –

-1

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

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

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

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

+5

Это круговой совет. Сайты pip направляют меня на установку ez_setup.py, которая является easy_install. Мне нужно решить эту ошибку сертификата. Кажется, это чудовище больше, чем просто это. – dlite922

+3

Привет, файл 'get-pip.py' bootstrap больше не требует' ez_setup.py' :) Он установит для вас как 'pip', так и' setuptools'. Конкретная причина, по которой я предлагаю, заключается в том, что она должна иметь свой собственный сертификат CA для проверки соединения. – Ivo

+0

Я могу загрузить get-pip.py с сертификатом без проверки, но как только я запустил его, он дает мне ошибки сертификата, пытающиеся установить setuptools и pip. – dlite922

5

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

В начале файла setuptools/ssl_support.py (который используется easy_install и находится внутри файла яйца:. ./lib/python2. 7/сайт-пакеты/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, чтобы указать на локальный файл пакета сертификатов даты до даты.

2

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

port install curl-ca-bundle 

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