web-dev-qa-db-ja.com

python easy_installがすべてのパッケージのSSL証明書エラーで失敗する

目標: RedHat 5を使用していて、最新のpythonおよびDjango for web appをインストールしようとしています。

私はpython27とeasy_installを正常にaltinstallし、opensslでwgetを正常にインストールしました。

問題:しかし、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')

Openssl s_client -showcert -connectを使用してpypi.python.orgの証明書を調べてみましたが、それをどうするか、どこに保存するかわかりません。グーグルにあまり情報がない、専門家の助けが必要。

ありがとうございました!

編集:opensslでwget *を意味しました。

$ 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'.
14
dlite922

curl証明書が古すぎます新しいcurl証明書をダウンロードしてください:

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

この問題の解決策を探したところ、このページが見つかりました。他の誰かが同様の問題を抱えている場合、私が見つけた解決策は:

Setuptools/ssl_support.pyファイル(easy_installで使用され、Eggファイル内にあります: "./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エラーで失敗します。したがって、証明書ファイルを更新するか、このssl_support.pyファイルの「cert_paths」を変更して、ローカルの最新の証明書バンドルファイルを指すようにする必要があります。

7

私は特定の環境でこの問題を見てきました。Macportsを備えたMac OS X、ユーザーのローカルパスにパッケージをインストールします。解決策は、curlから証明書をインストールすることでした。

port install curl-ca-bundle

ところで、証明書がなくなるまで、ほとんどのporteasy_installおよびpipコマンドは、sslエラーのため失敗します。

2
deeenes