web-dev-qa-db-ja.com

pipのインストールが「接続エラー:[SSL:CERTIFICATE_VERIFY_FAILED]証明書の検証に失敗しました(_ssl.c:598)」で失敗する

私はPythonが初めてなので、Windows 7で> pip install linkcheckerを試みます。

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

これはpip install linkcheckerを実行した後のmy 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
296
Jeremy Cook

信頼できるホストとして pypi.orgfiles.pythonhosted.org を設定すると、SSLエラーを無視できます。

$ pip install --trusted-Host pypi.org --trusted-Host files.pythonhosted.org <package_name>

:2018年4月中に、 Python Package Indexpypi.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>はこの後でも動作するはずです。そうでない場合は、次に説明するように、それ以上のことをする必要があります。


あなたは 信頼できるホストとプロキシをあなたの設定ファイルに追加してください _にしたいかもしれません。

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パッケージのWheel をダウンロードし、pipコマンドpip install wheel_package_name.whlを使ってパッケージをインストールします。
470
Vaulstein

このパラメータで証明書を指定できます。

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 Cert Verification も確認してください。

91
Steve Tauber

kenorb's answer はとても便利です(そして素晴らしいです)。
彼の解決策の中で、おそらくこれが最も簡単な解決策でしょう:--trusted-Host

たとえば、この場合あなたはすることができます

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

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

58
plhn

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

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

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

27
Koji D'infinte

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

C:\Users\<username>\AppData\Roaming\pip\pip.ini

その中に私は書いた:

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

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

23
user2673238

私が見つけた最も簡単な方法は、 https://www.digicert.com/digicert-root-certificates.htm#roots からDigiCertから「DigiCert高保証EVルート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. 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をどこか共通の場所に置き、それに応じてPIP_CERTを〜/ .bashrcにエクスポートします。

22
chnrxn

この問題を一度で解決するには、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 install linkcheckerファイルを作成した後、pip.confが文句なしにlinkcheckerをインストールしました。

17

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

  • HTTPSではなくHTTPを使用してください。
  • 代替のCAバンドルを指定するには、--cert <trusted.pem>またはCA_BUNDLE変数を使用します。

    例えば。あなたはWebブラウザから失敗したURLに行き、あなたのシステムにルート証明書をインポートすることができます。

  • python -c "import ssl; print(ssl.get_default_verify_paths())"を実行して現在のものを確認します(存在する場合は検証します)。

  • OpenSSLには、異なる証明書データベースを指定するために使用できる一対の環境(SSL_CERT_DIRSSL_CERT_FILE)があります。PEP-476
  • ホストに信頼済みのマークを付けるには、--trusted-Host <hostname>を使用します。
  • Pythonでは、verify=Falserequests.getを使用します( SSL Cert Verification を参照)。
  • 証明書の確認を避けるために--proxy <proxy>を使用してください。

ソケットオブジェクト用のTLS/SSLラッパー - 証明書の検証

16
kenorb

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

私の回避策は非常に簡単です:easy_installを使用してください。 (古いPIPバージョンのように)証明書をチェックしないか、システム証明書を使うことを知っているかのどちらかです。それは私のために毎回動作します。

それでもうまくいかず、問題のないネットワークやコンピュータにアクセスできるのであれば、いつでも自分の個人用PyPIサーバーをセットアップすることができます。 ミラーを使わずに独自のpypiリポジトリインデックスを作成する方法?

最後の努力としてeasy_installを使おうと試みるまで、私はほとんどそうしました。

10
Ross Peoples

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

pip install --index-url=http://pypi.python.org/simple/ linkchecker
8
baxeico

私はeasy_installでpip 1.2.1をインストールし、私の場合はパッケージをインストールすることができるpipの最新バージョン(一度に6.0.7)にアップグレードしました。

easy_install pip==1.2.1
pip install --upgrade pip
7
theofanis

使用する答え

pip install --trusted-Host pypi.python.org <package>

作業。しかし、pipがヒットしているリダイレクトやキャッシュがあるかどうかを確認する必要があります。 pip 9.0.1が付いているWindows 7では、私は走らなければなりませんでした

pip install \
  --trusted-Host pypi.python.org \
  --trusted-Host pypi.org \
  --trusted-Host files.pythonhosted.org \
  <package>

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

7
pmbotter

SSL検証の問題を解決するために、

これは私が試してみたものです。 ansibleをインストールしようとしたときにエラーが発生したため、パッケージ名にansibleを入れました。

これは、pipに、ダウンロード元のホストpypi.python.orgを信頼し、それをパッケージで信頼するように指示します。

pip install --trusted-Host pypi.python.org ansible

pip install --trusted-Host pypi.python.org --upgrade pip

6
Arathy Jan

時間と日付を正しく設定してください。

メイビー私は少し答えるのが遅れている、

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

このように更新してください。

    Sudo date -s "Wed Aug  23 11:12:00 GMT+1 2018"
    dpkg-reconfigure tzdata
6
Thomas Devoogdt

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

ソース

5
thiagofalcao

まず第一に、

    pip install --trusted-Host pypi.python.org <package name>

私のために働かなかった。 CERTIFICATE_VERIFY_FAILEDエラーが発生し続けました。しかし、私はエラーメッセージで彼らが 'pypi.org'サイトを参照していることに気づいた。そのため、pypi.python.orgではなく、これを信頼できるホスト名として使用しました。それはほとんど私にそこに着いた。ロードはまだCERTIFICATE_VERIFY_FAILEDで失敗していましたが、後の時点で。失敗していたウェブサイトへの参照を見つけて、それを信頼できるホストとして含めました。結局私のために働いたのは次のとおりです。

    pip install --trusted-Host pypi.org --trusted-Host files.pythonhosted.org <package name>
5
Pat B.

64ビットWindows 7 Enterprise上でActivePython 2.7.8、ActivePython 3.4.1、および "stock" 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

4
psteiner

このページでは、--verboseオプションを使用してpypi.python.orgではなくfiles.pythonhosted.orgにアクセスする必要があることを確認するまで、私には役に立ちませんでした。

pip install --trusted-Host files.pythonhosted.org <package_name>

そのため、--verboseオプションを使用して、実際に失敗しているURLを確認してください。

3
Dan Austin

恒久的な修正

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

例えば:

pip install <package name> --trusted-Host pypi.org --trusted-Host files.pythonhosted.org
3
Devesh Sharma

"https"を無視するためにこれを試すことができます:

pip install --index-url=http://pypi.python.org/simple/ --trusted-Host pypi.python.org  [your package..]
2
Smaillns

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

2
user3080641

Vaulstein 答えは私を助けた。

私のPCのどこにもpip.iniファイルが見つかりませんでした。次のようにしました。

  1. AppDataフォルダに移動しました。 appdataフォルダを開くには、コマンドプロンプトを開き、echo%AppData%と入力します。

AppData location using command Prompt

または単にWindowsエクスプローラで%AppData%と入力してください。

AppData location in windows Explorer

  1. そのappdataフォルダの中にpipというフォルダを作成します。

  2. 作成したそのpipフォルダーに、pip.iniという単純なテキストファイルを作成します。

  3. 選択した簡単なエディタを使用して、そのファイルに次の設定を貼り付けます。

pip.iniファイル:

[list]
format=columns

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

あなたは今行ってもいいはずです。

1
VivekDev

最近、私はビジュアルスタジオ2015でpython 3.6の同じ問題に直面しました。2日を過ごした後、私は解決策とそのうまくいった仕事を手に入れました。

Pipを使用して、またはビジュアルスタジオからnumpyをインストールしようとしているときにエラーが発生しました。URLを取得できませんでした https://pypi.python.org/simple/numpy/ :SSL証明書の確認中に問題が発生しました。 SSL:CERTIFICATE_VERIFY_FAILED]証明書の検証に失敗しました(_ssl.c:748) - スキップして要件numpyを満たすバージョンを見つけることができませんでした(バージョン:から)numpyに対する一致する配布が見つかりません

解決 :

Windows OSの場合

  1. open - > "%appdata%"存在しない場合は "pip"フォルダを作成します。
  2. Pipフォルダに「pip.ini」ファイルを作成します。
  3. ファイルを編集して書き込む
    [グローバル]
    trusted-Host = pypi.python.orgファイルを保存して閉じます。今すぐpip/visual studioを使用してインストールしてください。
1
Ankit Raval

私にとっては、これは以前にプロキシを設定したり(コンソールを開いたり)、コンソールを再起動したり、再起動したりするスクリプトを実行していたためです。

1
uingtea

1つの解決策(Windows用)は、pip.iniフォルダー(存在しない場合はフォルダーを作成します) _に_ %AppData%\pip\というファイルを作成し、以下の詳細を挿入することです。

[global]
cert = C:/certs/python_root.pem
proxy = http://my_user@my_company.com:my_password@proxy_ip:proxy_port

...そして、インストール手順を実行します。

pip3 install PyQt5

もう一つの選択肢は、プロキシと証明書の引数を使ってパッケージをインストールすることです...

$ pip3 install --proxy http://my_user@my_company.com:my_password@proxy_ip:proxy_port \
   --cert C:/certs/python_root.pem PyQt5

証明書の*.cerファイルを必要な*.pem形式に変換するには、次の手順を実行します。

$ openssl x509 -inform der -in python_root.cer -out python_root.pem

これが誰かに役立つことを願っています!

1
Marco

Opensuse install ca-certificates-mozillaでsystem.egに証明書がいくつか欠けていると、この問題が発生する可能性があります。

0
sancelot

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

libcrypto-1_1-x64.dll

libssl-1_1-x64.dll

0
ColdCold

私の場合は、最小のAlpine dockerイメージでPythonを実行していました。ルートCA証明書がありませんでした。修正:

apk update && apk add ca-certificates

0
Martin Melka

私の場合は、SSL証明書が私の会社の内部CAによって署名されているためです。 pip --certのような回避策を使用しても役に立ちませんでしたが、次のパッケージは役に立ちました。

pip install pip_system_certs

参照してください: https://pypi.org/project/pip-system-certs/

このパッケージは(バンドルされた証明書caではなく)デフォルトのシステムストアからの証明書を使用するように実行時にpipと要求にパッチを適用します。

これにより、pipはあなたのシステムインストールによって信頼されている証明書を持つサーバーへのtls/ssl接続を検証することができます。

0
Anton Bronnikov

私にとっては、推奨される方法はどれもうまくいきませんでした - cert、HTTP、trusted-Hostの使用。

私の場合、別のバージョンのパッケージへの切り替えはうまくいきました(この場合はpaho-mqtt 1.3.0ではなくpaho-mqtt 1.3.1)。

問題はそのパッケージのバージョンに固有のものであるように見えます。

0
MiN

makeを使用してPythonを手動でインストールした場合は、この回答に従う必要があります。 https://stackoverflow.com/a/42798679/6403406 それを機能させるために。

0
waqasgard

今のところ、pipが10にアップグレードされ、パスがpypi.python.orgからfiles.pythonhosted.orgに変更されました。コマンドをpipに更新してください--trusted-Host files.pythonhosted.org install python_package

0
Shivam Kotwalia

私は同様の問題に直面しました。私のために働いた解決策1)python 2.7をアンインストール2)python27フォルダを削除3)最新のpythonを再インストール

0
Satyam Raikar