pip install fails with "接続エラー:[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)"

私はPythonの初心者で、Windows 7に > pip install linkchecker をインストールしようとしています。いくつかのメモ:

  • pip install はどのパッケージでも失敗します。例えば、> pip install scrapyもSSLエラーになります。
  • Python3.4.1のバニラインストールにはpip1.5.6が含まれていました。最初にやろうとしたのはlinkcheckerのインストールだった。Python2.7はすでにインストールされていた。3.4.1をインストールするまで、pythonpipはコマンドラインから利用できなかった。
  • pip search linkchecker` は動作する。おそらく、pip searchがサイトのSSL証明書を検証しないためだと思います。
  • 私は会社のネットワークにいますが、インターネットにアクセスするためにプロキシを経由していません。
  • 各会社のコンピューター(私のコンピューターも含む)には、https://google.com、TLSトラフィックを監視できるようにするなど、さまざまな理由で使用される信頼されたルート認証局があります。それが関係しているかどうかはわかりません

以下は、pip install linkcheckerを実行した後のpip.logの内容です:

Downloading/unpacking linkchecker
  Getting page https://pypi.python.org/simple/linkchecker/
  Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
  Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
  Getting page https://pypi.python.org/simple/
  Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent)
  Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker
  Cannot fetch index base URL https://pypi.python.org/simple/
  URLs to search for versions for linkchecker:
  * https://pypi.python.org/simple/linkchecker/
  Getting page https://pypi.python.org/simple/linkchecker/
  Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)
  Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker
  Could not find any downloads that satisfy the requirement linkchecker
Cleaning up...
  Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook...
No distributions at all found for linkchecker
Exception information:
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main
    status = self.run(options, args)
  File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "C:\Python34\lib\site-packages\pip\req.py", line 1177, in prepare_files
    url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
  File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement
    raise DistributionNotFound('No distributions at all found for %s' % req)
pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker
質問へのコメント (7)

pypi.orgおよびfiles.pythonhosted.orgを信頼ホストとして設定することにより、SSLエラーを無視できます。

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org 

:2018年4月中に、Pythonパッケージインデックスpypi.python.orgから pypi.orgに移行されました。 これは、古いドメインを使用する「trusted-host」コマンドが機能しなくなったことを意味します。

恒久的な修正。

pip 10.0のリリース以降、「pip」自体をアップグレードするだけで、これを永続的に修正できるはずです。

$ pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools

または、再インストールだけで最新バージョンを入手できます。

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

(... そして、関連するPythonインタープリターで get-pip.pyを実行します)。

pip install< otherpackage>はこの後に動作するはずです。 そうでない場合は、以下で説明するように、さらに多くのことを行う必要があります。

---。

[信頼できるホストとプロキシを構成ファイルに追加][3]を使用できます。

pip.ini(Windows)または pip.conf(unix)。

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

----------。

代替ソリューション(安全性が低い)

回答のほとんどはセキュリティの問題を引き起こす可能性があります。

ほとんどのpythonパッケージを簡単にインストールするのに役立つ2つの回避策は次のとおりです。

- easy_installの使用:本当に怠惰で時間を無駄にしたくない場合は、 easy_install< package_name>を使用します。 一部のパッケージが見つからないか、小さなエラーが発生することに注意してください。 - Wheelの使用:Pythonパッケージのホイールをダウンロードし、pipコマンド pip install wheel_package_name.whlを使用してパッケージをインストールします。

[3]:https://pip.pypa.io/en/stable/user_guide/?highlight = appdata#config-file。

解説 (40)

このパラメータで証明書を指定できる:

pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker

を参照してください:ドキュメント » リファレンスガイド » pip を参照してください。

あなたの会社のルート証明書を指定してもうまくいかない場合は、cURLの証明書を指定するとうまくいくかもしれません: http://curl.haxx.se/ca/cacert.pem

CRTファイルではなく、PEMファイルを使用する必要があります。もしCRTファイルをお持ちなら、ファイルをPEMに変換するコメント欄にCRTファイルで動作するようになったという報告がありますが、私は検証していません。

また、確認してください:SSL証明書の検証も確認してください。

解説 (11)

ケノーブの答えは非常に役立ちます(そして素晴らしいです。!)。
彼の解決策の中で、おそらくこれが最も単純なものです。 --trusted-host

たとえば、この場合はできます。

pip install --trusted-host pypi.python.org linkchecker

pemファイル(またはその他のもの)は不要です。

解説 (2)

私にとっての問題は、フォルダを作成することで修正されました。 pip、ファイル付き: pip.ini。 に。 C:\ Users \< username> \ AppData \ Roaming \。 例えば:

C:\Users\\AppData\Roaming\pip\pip.ini

その中に私は書いた:

[global]
trusted-host = pypi.python.org
               pypi.org
               files.pythonhosted.org

Pythonを再起動し、pipがこれらのサイトを永続的に信頼し、それらを使用してパッケージをダウンロードしました。

WindowsでAppDataフォルダが見つからない場合は、ファイルエクスプローラに「%appdata%」と書き込むと、表示されるはずです。

解説 (4)

答えは非常に似ており、少し混乱しています。 私の場合、私の会社のネットワークの証明書が問題でした。 私は以下を使用して問題を回避することができました。

pip install --trusted-host files.pythonhosted.org --trusted-host pypi.org --trusted-host pypi.python.org oauthlib -vvv

ここに見られるように。 冗長出力が不要な場合は、-vvv引数を省略できます。

解説 (2)

私が見つけた最も簡単な方法は、DigiCertのhttps://www.digicert.com/digicert-root-certificates.htm#rootsから「DigiCert High Assurance EV Root CA」をダウンロードして使用することです。

https://pypi.python.org/にアクセスして、アドレスバーのロックアイコンをクリックして証明書発行者を確認するか、opensslを使用してオタクの信用を増やすことができます

$ openssl s_client -connect pypi.python.org:443
CONNECTED(00000003)
depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=3359300/street=16 Allen Rd/postalCode=03894-4801/C=US/ST=NH/L=Wolfeboro,/O=Python Software Foundation/CN=www.python.org
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA

証明書チェーンの最後のCN値は、ダウンロードする必要があるCAの名前です。

1回限りの作業については、次の操作を行います。

1。 DigiCertからCRTをダウンロードします。 2。 CRTをPEM形式に変換します。 3。 PIP_CERT環境変数をPEMファイルのパスにエクスポートします。

(最後の行は、bashシェルを使用していることを前提としています)pipを実行する前に。

curl -sO http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt 
openssl x509 -inform DES -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -text
export PIP_CERT=`pwd`/DigiCertHighAssuranceEVRootCA.pem

これを再利用できるようにするには、DigiCertHighAssuranceEVRootCA.crtを共通の場所に置き、それに応じて〜/ .bashrcにPIP_CERTをエクスポートします。

解説 (1)

恒久的な修正。

pip install --upgrade pip --trusted-host pypi.org --trusted-host files.pythonhosted.org

例:

pip install  --trusted-host pypi.org --trusted-host files.pythonhosted.org
解説 (0)

この問題を一度に解決するには、「pip.conf」ファイルがあることを確認できます。

ドキュメントによると、これは pip.confがあるべき場所です。

Unixのデフォルトの構成ファイルは次のとおりです。 $ HOME / .config / pip / pip.confは、XDG_CONFIG_HOME環境変数を尊重します。

macOSでは、ディレクトリ $ HOME / Library / Application Support / pip / pip.confがディレクトリ $ HOME / Library / Application Support / pipに他にある場合、構成ファイルは $ HOME / .config / pip / pip.confです。

Windowsでは、構成ファイルは %APPDATA%\ pip \ pip.iniです。

virtualenv内:

UnixとmacOSでは、ファイルは「$ VIRTUAL_ENV / pip.conf」です。

Windowsでは、ファイルは %VIRTUAL_ENV%\ pip.iniです。

pip.confは次のようになります。

[global]
trusted-host = pypi.python.org

pip.confファイルを作成した後、 pip install linkcheckerが文句なしにインストールされました。

解説 (5)

CERTIFICATE_VERIFY_FAILEDの問題を解決するには、次の可能性があります。

-HTTPSの代わりにHTTPを使用します。 ---cert< trusted.pem>または CA_BUNDLE変数を使用して、代替CAバンドルを指定します。

例えば。 Webブラウザーから失敗したURLに移動し、ルート証明書をシステムにインポートできます。

-python -c "import ssl; print(ssl.get_default_verify_paths())"を実行して、現在のものを確認します(存在する場合は検証します)。 -OpenSSLには、さまざまな証明書データベースを指定するために使用できる環境のペア( SSL_CERT_DIRSSL_CERT_FILE)があります PEP-476< / sup>。 ---trusted-host< hostname>を使用して、ホストを信頼済みとしてマークします。 -Pythonでは、「requests.get」に「verify = False」を使用します(SSL Cert Verificationを参照)。 -証明書チェックを避けるために、 --proxy< proxy>を使用します。

続きを読む:ソケットオブジェクトのTLS / SSLラッパー-証明書の検証

解説 (0)

時刻と日付を正しく設定します。!

私にとって、私の日付と時刻がRaspberry Piで誤って構成されていることがわかりました。 その結果、https://files.pythonhosted.org/サーバーを使用して、すべてのSSLおよびHTTPS接続が失敗しました

このように更新します。


sudo date -s "Wed Thu 23 11:12:00 GMT + 1 2018"。
sudo dpkg-reconfigure tzdata。
``。

###または直接、例えば. Googleの時間:
参照.:https://superuser.com/a/635024/935136。

```バッシュ。
sudo date -s "$(curl -s --head http://google.com| grep ^ Date:| sed 's / Date:// g')"。
sudo dpkg-reconfigure tzdata。
``。
解説 (1)

最近、SSLトラフィックをフィルタリングできるように独自の認証局を使用する会社のWebコンテンツフィルターが原因で、この問題に遭遇しました。 私の場合、PIPはシステムのCA証明書を使用していないようで、あなたが言及したエラーを生成します。 PIPをバージョン1.2.1にダウングレードすると、独自の一連の問題が後で発生するため、Python 3.4に付属の元のバージョンに戻りました。

私の回避策は非常に簡単です。 easy_install< / code>を使用します。 (古いPIPバージョンのような)証明書をチェックしないか、システム証明書を使用することがわかっています。これは、毎回機能し、PIPを使用してeasy_installでインストールされたパッケージをアンインストールできるためです。

それが機能せず、問題のないネットワークまたはコンピューターにアクセスできる場合は、いつでも独自のPyPIサーバーをセットアップできます。https://stackoverflow.com/questions/18052217/how-to -create-local-own-pypi-repository-index-without-mirror。

easy_install< / code>を使用しようとするまで、ほとんどそれを行いました。最後の溝の努力として。

解説 (1)

httpsの代わりにhttpを使用することで、SSLエラーを回避することができます。もちろん、これはセキュリティの点では最適ではありませんが、急いでいる場合は、トリックを行う必要があります:

pip install --index-url=http://pypi.python.org/simple/ linkchecker
解説 (9)

使用する答え。

pip install --trusted-host pypi.python.org 

作業。 ただし、リダイレクトがあるか、キャッシュが「pip」がヒットしているかどうかを確認する必要があります。 「pip 9.0.1」のWindows 7では、実行する必要がありました。

pip install \
  --trusted-host pypi.python.org \
  --trusted-host pypi.org \
  --trusted-host files.pythonhosted.org \

これらは、冗長フラグで見つけることができます。

解説 (0)

4つのオプションがあります。

パラメータとして証明書を使用します。

$ pip install --cert /path/to/mycertificate.crt linkchecker

pip.confで証明書を使用する。

このファイルを作成:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

そしてこれらの行を追加します。

[global]
cert = /path/to/mycertificate.crt

証明書を無視してHTTPを使用します。

$ pip install --trusted-host pypi.python.org linkchecker

証明書を無視し、pip.confでHTTPを使用します。

このファイルを作成:

$HOME/.pip/pip.conf (Linux)

%HOME%\pip\pip.ini (Windows)

そしてこれらの行を追加します。

[global]
trusted-host = pypi.python.org

ソース。

-https://pip.pypa.io/en/latest/user_guide/#configuration

解説 (0)

easy_installを使用してpip 1.2.1をインストールし、私の場合にパッケージをインストールできる最新バージョンのpip(当時は6.0.7)にアップグレードしました。

easy_install pip==1.2.1
pip install --upgrade pip
解説 (0)

まず、。

    pip install --trusted-host pypi.python.org 

私にはうまくいきませんでした。 CERTIFICATE_VERIFY_FAILEDエラーを取得し続けました。 しかし、エラーメッセージで「pypi.org」サイトを参照していることに気づきました。 したがって、これをpypi.python.orgの代わりに信頼できるホスト名として使用しました。 それで私はほとんどそこにたどり着きました。 CERTIFICATE_VERIFY_FAILEDではまだ負荷がかかりませんでしたが、後で。 失敗していたウェブサイトへの参照を見つけて、私はそれを信頼できるホストとして含めました。 最終的に私のために働いたのは:

    pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org 
解説 (0)

ActivePython 2.7.8、ActivePython 3.4.1、および64ビットWindows 7 Enterpriseの「ストック」Python 3.4.2で「pip install ftputil」を試すのと同じ問題がありました。 すべての試行はOPと同じエラーで失敗しました。

Python 3.4.2の問題をpip 1.2.1にダウングレードすることで回避しました: easy_install pip == 1.2.1(https://stackoverflow.com/a/16370731/234235を参照)。 同じ修正がActivePython 2.7.8でも機能しました。

2013年3月に報告されたバグはまだ開いています:https://github.com/pypa/pip/issues/829

解説 (2)

これが関連しているかどうかはわかりませんが、Anaconda3 / Library / binからAnaconda3 / DLLにこれらのファイルをコピーすることによって修正される同様の問題がありました。

libcrypto-1_1-x64.dll。

libssl-1_1-x64.dll。

解説 (1)

--verboseオプションを使用して、pypi.python.orgではなくfiles.pythonhosted.orgにアクセスしたいことを確認するまで、このページの何も機能しませんでした。

pip install --trusted-host files.pythonhosted.org 

--verboseオプションを使用して、実際に失敗しているURLを確認します。

解説 (0)

pipを削除し、古いバージョンのpipをインストールすることでこの問題を解決しました: https://pypi.python.org/pypi/pip/1.2.1

解説 (5)