Ответ 1
ваш curl cert слишком старый, попробуйте загрузить новый curl cert:
sudo wget http://curl.haxx.se/ca/cacert.pem -O /etc/pki/tls/certs/ca-bundle.crt
Цель: Я нахожусь в 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'.
ваш curl cert слишком старый, попробуйте загрузить новый curl cert:
sudo wget http://curl.haxx.se/ca/cacert.pem -O /etc/pki/tls/certs/ca-bundle.crt
Я нашел эту страницу после поиска решения этой проблемы. Если у кого-то есть аналогичная проблема, решение, которое я нашел, это:
В начале файла 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, чтобы указать на локальный файл пакета сертификатов даты до даты.
Я видел эту проблему в определенной среде: Mac OS X с macports, устанавливая пакеты в локальном пути пользователя. Решение заключалось в установке сертификатов из curl:
port install curl-ca-bundle
Btw, пока у вас не будет доказательств, большинство команд port
, easy_install
и pip
будут терпеть неудачу из-за ошибки ssl.
Попробуйте установить pip
вместо установки пакета python.
Вы можете найти документацию, чтобы быстро ее установить и использовать здесь. Это обычно намного лучше, чем easy_install
.
Он также использует SSL по умолчанию и с стеком сертификатов запросов (полученным из mozilla).
Вы также можете найти много информации о работе с пакетами python вообще в Python Packaging User Guide.