urllibおよび「SSL:CERTIFICATE_VERIFY_FAILED」エラー


279

次のエラーが発生します。

Exception in thread Thread-3:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 810, in        __bootstrap_inner
self.run()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 763, in  run
self.__target(*self.__args, **self.__kwargs)
File "/Users/Matthew/Desktop/Skypebot 2.0/bot.py", line 271, in process
info = urllib2.urlopen(req).read()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 431, in open
response = self._open(req, data)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 449, in _open
'_open', req)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1240, in https_open
context=self._context)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 1197, in do_open
raise URLError(err)
URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>

これは、このエラーの原因となっているコードです。

if input.startswith("!web"):
    input = input.replace("!web ", "")      
    url = "https://domainsearch.p.mashape.com/index.php?name=" + input
    req = urllib2.Request(url, headers={ 'X-Mashape-Key': 'XXXXXXXXXXXXXXXXXXXX' })
    info = urllib2.urlopen(req).read()
    Message.Chat.SendMessage ("" + info)

使用しているAPIでは、HTTPSを使用する必要があります。検証をバイパスするにはどうすればよいですか?


2
URLに問題はなく、信頼できる一般的な証明書で正常に検証できます。したがって、証明書の検証を回避するのではなく、修正することをお勧めします。使用しているpythonのバージョンは?
Steffen Ullrich、2015年

これは、stackoverflow.com / a / 27826829/3081018に関連している可能性があります。サーバーは、複数の信頼パスを持つ同じ種類の証明書チェーンを使用します。検証に使用する必要がある可能性のあるcafileを参照してください。
Steffen Ullrich、2015年

7
このエラーは、ヨセミテへのアップグレード後にPython 3.5でも発生します
pyCthon

2
これは状況を説明します。access.redhat.com/articles/2039753
Charlie Burns

4
「検証をバイパスするにはどうすればよいですか?」間違った質問です。ドメインから提供された証明書を検証する方法をたずねる必要があります。
jww 2017年

回答:


296

検証をバイパスするだけの場合は、新しいSSLContextを作成できます。デフォルトでは、新しく作成されたコンテキストはCERT_NONEを使用します

セクション17.3.7.2.1に記載されているように、これに注意してください

SSLContextコンストラクターを直接呼び出す場合、CERT_NONEがデフォルトです。他のピアを認証しないため、特にクライアントモードでは、ほとんどの場合、通信先のサーバーの信頼性を保証したい場合、安全ではない可能性があります。したがって、クライアントモードでは、CERT_REQUIREDを使用することを強くお勧めします。

しかし、他の何らかの理由で今すぐに機能させたい場合は、次のことを実行できますimport ssl

input = input.replace("!web ", "")      
url = "https://domainsearch.p.mashape.com/index.php?name=" + input
req = urllib2.Request(url, headers={ 'X-Mashape-Key': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' })
gcontext = ssl.SSLContext()  # Only for gangstars
info = urllib2.urlopen(req, context=gcontext).read()
Message.Chat.SendMessage ("" + info)

これで問題は解決しますが、実際には問題を解決していませんが[SSL: CERTIFICATE_VERIFY_FAILED]、証明書を確認していないため、問題は表示されません!

上記に加えて、これらの問題が発生している理由について詳しく知りたい場合は、PEP 476を参照してください。

このPEPは、X509証明書の署名の検証、およびデフォルトでPythonのHTTPクライアントのホスト名検証を有効にすることを提案し、コールごとのオプトアウトを条件としています。この変更は、Python 2.7、Python 3.4、およびPython 3.5に適用されます。

上記の私のアドバイスと似ていないアドバイスされたオプトアウトがあります:

import ssl

# This restores the same behavior as before.
context = ssl._create_unverified_context()
urllib.urlopen("https://no-valid-cert", context=context)

また、Pythonではあまり見られないmonkeypatchingを介した非常に推奨されないオプションも備えています。

import ssl

ssl._create_default_https_context = ssl._create_unverified_context

これは、未検証のコンテキストを作成する関数で、コンテキスト作成のデフォルト関数をオーバーライドします。

PEPで述べられているようにこれに注意してください:

このガイダンスは主に、HTTPS接続での証明書の検証をまだサポートしていないレガシー環境でこのPEPを実装する新しいバージョンのPythonを採用したいシステム管理者を対象としています。たとえば、管理者は、Python用の標準オペレーティング環境のsitecustomize.pyに上記のmonkeypatchを追加することでオプトアウトできます。アプリケーションとライブラリは、この変更プロセスを広くするべきではありません(システム管理者が制御する構成設定への応答を除く)。

ソフトウェアで証明書を検証しないことがなぜ悪いのかについての論文を読みたい場合は、ここで見つけることができます


1
それで、このエラーが原因で使用setup.py uploadできない場合、どうすれば修正できますか?
pyCthon 2015

5
ssl._create_default_https_context = ssl._create_unverified_contextこれは、Noelkdが最後に述べたように私にとってはうまくいきました。私たちのサイトはHPプリンターのイントラネットサイトなので、純粋にスクレイピングに使用されます...この方法を使用しても問題はありません。
ihightower 2015年

あなたの最初の方法は最も望ましくない方法です-検証をバイパスします。証明書を実際に検証するものが最初にリストされていないのはなぜですか?
jww 2017年

1
これは、古いバージョンのopenSSLを使用している場合にも発生する可能性があります。だから私にとってうまくいったのはcertifi 、ボックスの最新バージョンへのアップデートとopensslのアップデートでした。
myusuf3 2017年

1
context 私が必要なものです
prayagupd

382

これはあなたの特定の問題の解決策ではありませんが、このスレッドが「SSL:CERTIFICATE_VERIFY_FAILED」のGoogleの上位の結果であり、野生のガチョウの追跡に私を導くので、ここに置いておきます。

OSXにPython 3.6をインストールし、https://サイトに接続しようとすると「SSL:CERTIFICATE_VERIFY_FAILED」エラーが発生する場合は、OSX上のPython 3.6に証明書がまったくなく、SSLを検証できないことが原因である可能性があります接続。これはOSX上の3.6での変更であり、certifi証明書のパッケージをインストールするインストール後の手順が必要です。これは、ReadMeに記載されています。/Applications/Python\ 3.6/ReadMe.rtf

ReadMeでは、このポストインストールスクリプトを実行する必要がありますcertifi/Applications/Python\ 3.6/Install\ Certificates.command

リリースノートにはいくつかの情報があります:https : //www.python.org/downloads/release/python-360/


105
/ Applications / Python \ 3.6 / Install \ Certificates.commandを直接実行すると、OSXでの問題が解決します。ありがとう。
ムヨン2017年

2
私はOS X El Capitan 10.11.6、Python 3.6.0を使用していますが、このソリューションは完全に機能しました。
y2knoproblem 2017

2
私はmacOS Sierra 10.12.5、Python 3.6.1を使用していますが、このソリューションは完全に機能しました。
ジェームズ

4
これは私/Applications/Python\ 3.7/Install\ Certificates.command がこれを直接実行するためにそれを修正しましたterminal!@CraigGlennieと@muyongに感謝しout-of-the-box-thinkingます。
JayRizzo

6
macOS Mojave上のPython 3.7:ここでは機能しません。アンインストール/再インストール/インストール証明書の実行、再起動などを行ってもうまくいかない
Thomas

71

クレイグ・グレニーの答えをさらに詳しく説明します。

MacOs Sierra上のPython 3.6.1

これをbashターミナルに入力すると問題が解決しました:

pip install certifi
/Applications/Python\ 3.6/Install\ Certificates.command

3
sudo /Applications/Python\ 3.6/Install\ Certificates.command権限が拒否されているかどうかを試してください。
KingKongCoder 2018年

これは実際にはPython 3.6の問題を修正しません。-1
ハイパーム

1
コマンドラインの使用がおかしくなった場合(おそらくここにいるのではないかもしれませんが)、Pythonがインストール時に作成したアプリケーションフォルダー(または他のOSでは同等のもの)を見つけて、ダブルクリックしてスクリプトを開くこともできます。フォルダーの具体的な名前は、インストールしたPythonのバージョンによって異なります。
オルドス-ベーコン

Python 3.7.3の魅力のように動作しました。ありがとうございました。
klbytec 2019

ありがとう。文字通り何百もの解決策を探しましたが、あなたの解決策はうまくいきました。
NND

43

Windowsでは、Pythonはシステム証明書を調べず、にある独自の証明書を使用し?\lib\site-packages\certifi\cacert.pemます。

あなたの問題の解決策:

  1. ドメイン検証証明書を* .crtまたは* pemファイルとしてダウンロードします
  2. エディターでファイルを開き、その内容をクリップボードにコピーします
  3. あなたのcacert.pem場所を見つける:from requests.utils import DEFAULT_CA_BUNDLE_PATH; print(DEFAULT_CA_BUNDLE_PATH)
  4. cacert.pemファイルを編集し、ファイルの最後にドメイン検証証明書を貼り付けます。
  5. ファイルを保存してリクエストをお楽しみください!

6
lib\site-packages\certifi\cacert.pemPython 2.7.10には存在しません。そして問題はそうではありurllib2ませんrequests
ケビンスミス

2
これまでの最高の解決策は、Twitter APIが、Pythonのcacert.pemファイルにないDigiCert証明書を使用することです。そこにVOILAを追加しました!
digz6666 2016

2
Debianに取り組みました。記録のために、私のシステムのファイルパスはでした/usr/local/lib/python2.7/dist-packages/certifi-2015.09.06.2-py2.7.egg/certifi/cacert.pem。ありがとう!
ofavre 2017年

残念ながら、pythonリクエストはオペレーティングシステムのCAトラストストアを使用しません。github.com/requests/requests/issues/2966。REQUESTS_CA_BUNDLE github.com/bloomreach/s4cmd/issues/111#issuecomment-406839514を設定する必要があり ます。
jamshid

Windows 10、Python 3.6で動作し、GoogleおよびTwitter APIと一般的なリクエストモジュールを備えています。
brittenb 2018年

36

Mac OS Xの私のソリューション:

1)Python言語の公式ウェブサイトhttps://www.python.org/downloads/からダウンロードしたネイティブアプリのPythonインストーラーを使用して、Python 3.6.5にアップグレードします。

このインストーラーは、homebrewよりもはるかに優れた新しいPythonのリンクとシンボリックリンクの更新を処理していることがわかりました。

2)更新されたPython 3.6ディレクトリにある「./Install Certificates.command」を使用して新しい証明書をインストールします

> cd "/Applications/Python 3.6/"
> sudo "./Install Certificates.command"

マックOS Xの魅力のように働いた
マヌーはマシュー

31

これを環境変数に追加してみてください:

PYTHONHTTPSVERIFY=0 

これはすべての HTTP検証を無効にするため、少し大げさなアプローチですが、検証が必要ない場合は効果的な解決策になる可能性があることに注意してください。


17
すべてのpythonのすべてのHTTP検証を無効にすることは、検証で1つのエラーを処理するために少し過剰であると思います。デフォルトで検証が必要になる場合がたくさんあります。
trevorKirkby 16

Python 2.7.13上のWindows Server 2016で私のために働いた。通常、Windowsサーバーにpythonをインストールしていませんが、VDSへのNexus 1000vの移行によるvCenterのアップグレードにそれが必要でした。これにより、当面は自己署名のvCenter証明書に関する問題が修正されます(VMCAと有効な証明書を使用します)アップグレードされた環境)。Pythonリクエストパッケージのcacert.pemを編集して、証明書が受け入れられるようにすることができませんでした
Christopher Thorjussen

3
また、スクリプトを実行する前にコマンドラインウィンドウで変数を直接設定するため、@ someone-or-other-orが恐れているようなすべてのチェックが無効になることはありません。これもお勧めしません。
Christopher Thorjussen、2017年

それは私のユースケースに最適です:テスト。本番環境ではこれを行うことはありませんが、SSLとは関係のないテストを実行する場合は、これは素晴らしいオプションです。
ソリン2017年

おかげで、このソリューションは私のためにそれをしました:import os os.environ ["PYTHONHTTPSVERIFY"] = "0"
mbello

28

Python 3.4、3.5、および3.6で使用urllib.request.urlopenしていましたが、同様の問題がありました。(これは、Python 2のドキュメントページの冒頭にある注記に従って、Python 3に相当するものの一部です。)urllib2urllib2

私の解決策はをpip install certifiインストールすることでしたcertifi

... TLSホストのIDを確認しながらSSL証明書の信頼性を検証するためのルート証明書の厳選されたコレクション。

次に、以前持っていたコードで:

import urllib.request as urlrq

resp = urlrq.urlopen('https://example.com/bar/baz.html')

私はそれを次のように修正しました:

import urllib.request as urlrq
import certifi

resp = urlrq.urlopen('https://example.com/bar/baz.html', cafile=certifi.where())

urllib2.urlopenドキュメントを正しく読んだ場合、それにもcafile引数があります。したがって、urllib2.urlopen([...], certifi.where())Python 2.7でも動作する可能性があります。


更新(2020-01-01): Python 3.6以降cafile引数to urlopenは非推奨になりましたcontext。代わりに引数を指定することになっています。以下は3.5から3.8まで同様に機能することがわかりました。

import urllib.request as urlrq
import certifi
import ssl

resp = urlrq.urlopen('https://example.com/bar/baz.html', context=ssl.create_default_context(cafile=certifi.where()))

1
load_verify_locations変異しSSLContext、インスタンスを返しますNonecontext=ssl.create_default_context(cafile=certifi.where())代わりに使用する必要があります。詳しくはsslドキュメントをご覧ください。
ostrokach

1
@ostrokachええ、私はそのようなことを試しましたが、間違ったssl関数を使用したに違いありません。編集を参照してください。OK?
hBy2Py

13
import requests
requests.packages.urllib3.disable_warnings()

import ssl

try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    # Legacy Python that doesn't verify HTTPS certificates by default
    pass
else:
    # Handle target environment that doesn't support HTTPS verification
    ssl._create_default_https_context = _create_unverified_https_context

ここから取得https://gist.github.com/michaelrice/a6794a017e349fc65d01


Jenkins環境、個人環境でこのソリューションをテストしました。これは機能します!
rapport89 2018

2
これはすべての証明書の検証をバイパスするため非常に危険であり、自己責任で使用してください。また、ANYBODYの愛情を込めて、これを製品コードで使用しないでください。
dragon788

ありがとう。最後にそれは働いた。Mac OSの/ ApplicationsにPython 3.6がインストールされている必要はありません。これは受け入れられる答えになるはずです。
Biranchi

あなたは決してそのようなモンキーパッチを行うべきではありません。これは非常に危険であり、コードのすべての下流での使用に影響します。
Acumenus

10

私がコメントで書いたように、この問題はおそらくこのSO回答に関連しています

つまり、証明書を検証する方法は複数あります。OpenSSLで使用される検証は、システムにある信頼されたルート証明書と互換性がありません。OpenSSLはPythonで使用されます。

あなたはVerisign Class 3 Public Primary Certification Authorityの欠落している証明書を取得してcafileから、Pythonのドキュメントに従ってオプションを使用することを試みることができます

urllib2.urlopen(req, cafile="verisign.pem")

pythonとssl検証リンク
なし

8

Linuxマシンの1つでも同様の問題がありました。新しい証明書を生成し、証明書ディレクトリを指す環境変数をエクスポートすると、修正されました。

$ sudo update-ca-certificates --fresh
$ export SSL_CERT_DIR=/etc/ssl/certs

7

Craig Glennieと同じように、ウェブ全体でこの問題に言及している多くの投稿のために、野生のガチョウ追跡を行ったので、別の答えを追加する必要があります。

私はMacPortsを使用していて、当初Pythonの問題だと思っていたのは、実際にはMacPortsの問題でした。opensslのインストールではルート証明書がインストールされません。このブログ投稿でport install curl-ca-bundle述べたように、解決策はです。


5

私はここでこれを見つけまし

私はこの解決策を見つけました、あなたのソースファイルの最初にこのコードを挿入してください:

import ssl

try:
   _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    # Legacy Python that doesn't verify HTTPS certificates by default
    pass
else:
    # Handle target environment that doesn't support HTTPS verification
    ssl._create_default_https_context = _create_unverified_https_context

このコードにより、検証が元に戻され、SSL認証が検証されません。


このビデオを見て、sslとは何かを理解するのに大いに役立ちました。ビデオURL:youtu.be/dsuVPxuU_hc
ガネーシュチャウダリーサダナラ

4

Centos 6/7、Fedora上のPython 3.4+の場合、信頼できるCAを次のようにインストールするだけです。

  1. CA.crtを /etc/pki/ca-trust/source/anchors/
  2. update-ca-trust force-enable
  3. update-ca-trust extract

2
ばかげた質問かもしれませんが、CA.crtとは何で、どこにありますか?
Iqbal

4

アナコンダのソリューション

私の設定は、プロキシを搭載したMacOS上のAnaconda Python 3.7です。パスは異なります。

  • これは、正しい証明書パスを取得する方法です。
import ssl
ssl.get_default_verify_paths()

私のシステムで生成された

Out[35]: DefaultVerifyPaths(cafile='/miniconda3/ssl/cert.pem', capath=None,
 openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/miniconda3/ssl/cert.pem',
 openssl_capath_env='SSL_CERT_DIR', openssl_capath='/miniconda3/ssl/certs')

証明書の場所がわかったら、プロキシが使用する証明書をそのファイルの最後に連結します。

次のコマンドを実行して、プロキシと連携するようにcondaを設定しました。

conda config --set ssl_verify <pathToYourFile>.crt

証明書の場所がわからない場合は、次の場所にあります~/.condarc

ssl_verify: <pathToYourFile>.crt

次に、そのファイルを最後に連結する/miniconda3/ssl/cert.pem と、リクエストが機能し、特にsklearn.datasets同様のツールが機能するはずです。

その他の警告

Anacondaの設定が少し異なるため、他のソリューションは機能しませんでした:

  • パスはApplications/Python\ 3.X単に存在しません。

  • 以下のコマンドで提供されるパスは間違ったパスです

from requests.utils import DEFAULT_CA_BUNDLE_PATH
DEFAULT_CA_BUNDLE_PATH

3

同じ問題があったので、私は半恥で頭をぶら下げました。ただし、私の場合は、ヒットしたURLが有効で、証明書が有効であったという点が異なります。有効ではなかったのは、ウェブへの私の接続でした。ブラウザ(この場合はIE)にプロキシの詳細を追加できませんでした。これにより、検証プロセスが正しく行われなくなりました。
プロキシの詳細に追加すると、私のpythonはとても満足しました。


1
何かを忘れてそれを考え出して共有することに恥をかかずに頭をぶら下げないでください。誰かがそれを役立つと思うかもしれません。IEを使用していますが... shame:p
Davos

3

Python 2.7.12(デフォルト、2016年7月29日15:26:22)は、前述の問題を修正しました。この情報は他の誰かを助けるかもしれません。


3
Macで2.7.12に遭遇しましたが、urllib2ライブラリを使用していますが、requetsライブラリを使用しても問題ありません
marcadian

@marcadianのインストールと使用certifi明らかで開催された証明書のこすりで、requests3.6にはPython 3.4に私のために問題を修正しました
hBy2Py

3

これらすべての指示が私の問題を解決しなかったのには驚いています。それにもかかわらず、診断は正しいです(ところで、私はMacとPython3.6.1を使用しています)。だから、正しい部分を要約するには:

  • Macでは、AppleはOpenSSLを廃止しています
  • Pythonは独自のCAルート証明書のセットを使用するようになりました
  • バイナリPythonのインストールにより、Pythonが必要とするCAルート証明書をインストールするためのスクリプトが提供されました( "/ Applications / Python 3.6 / Install Certificates.command")
  • 詳細については、「/ Applications / Python 3.6 / ReadMe.rtf」をお読みください

私にとって、スクリプトは機能せず、それらすべての証明書とopensslのインストールも修正に失敗しました。多分私は複数のpython 2と3のインストールと多くのvirtualenvを持っているからです。最後に手作業で修正する必要があります。

pip install certifi   # for your virtualenv
mkdir -p /Library/Frameworks/Python.framework/Versions/3.6/etc/openssl
cp -a <your virtualenv>/site-package/certifi/cacert.pem \
  /Library/Frameworks/Python.framework/Versions/3.6/etc/openssl/cert.pem

それでも失敗する場合。次に、OpenSSLも再インストールします。

port install openssl

2

あなたと同じように、私は古いiMac(OS X 10.6.8)でpython 2.7を使用していますが、urllib2.urlopenを使用して問題も解決しました:

urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]

私のプログラムはSSL証明書の問題なしで問題なく実行されていましたが、突然(プログラムのダウンロード後に)このSSLエラーでクラッシュしました。

問題は使用されたpythonのバージョンでした:

  1. https://www.python.org/downloadsおよびpython-2.7.9-macosx10.6.pkgで問題ありません

  2. Homebrewツールによってインストールされた問題:「brew install python」、バージョンは/ usr / local / binにあります。

と呼ばれる章ではCertificate verification and OpenSSL [CHANGED for Python 2.7.9]/Applications/Python 2.7/ReadMe.rtf多くの詳細で問題を説明しています。

ですから、正しいバージョンのpythonを確認してダウンロードし、PATHに入れてください。


2

centOS 7を搭載したAmazon EC2上のPython 2.7

私はENV変数を設定しなければならなかったSSL_CERT_DIR私を指すようにca-bundleに位置していました/etc/ssl/certs/ca-bundle.crt


答えは私を正しい道に導いてくれました。ubuntuでは、に設定SSL_CERT_DIRする/etc/ssl/certs必要があり、ca-certificatesパッケージがインストールされ、最新であることも確認しました。
Norman Breau



1

を見てみましょう

/アプリケーション/ Python 3.6 / Install Certificates.command

Aplicationsに移動し、Certificates.commandをクリックすることもできます。


1

私の場合requestsurllib3バージョンが互換性がないためにこのエラーが発生し、インストール中に次のエラーが発生しました。

ERROR: requests 2.21.0 has requirement urllib3<1.25,>=1.21.1, but you'll have urllib3 1.25 which is incompatible.
pip install 'urllib3<1.25' --force-reinstall

トリックをしました。


1

別のAnacondaソリューション。macOSのPython 2.7環境でCERTIFICATE_VERIFY_FAILEDを取得していました。コンダパスが悪かったことがわかります:

ベース(3.7)環境:

>>> import ssl
>>> ssl.get_default_verify_paths()
DefaultVerifyPaths(cafile='/usr/local/anaconda3/ssl/cert.pem', capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/usr/local/anaconda3/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/usr/local/anaconda3/ssl/certs')

2.7環境(パスは存在しませんでした!):

DefaultVerifyPaths(cafile='', capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/usr/local/anaconda3/envs/py27/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/usr/local/anaconda3/envs/py27/ssl/certs')

修正:

cd /usr/local/anaconda3/envs/py27/
mkdir ssl
cd ssl
ln -s ../../../ssl/cert.pem

1

ca-certificatesLinux のパッケージに中間証明書がないため、SSL:CERTIFICATE_VERIFY_FAILEDエラーも発生する可能性があります。たとえば、私の場合、Firefoxブラウザに含まれているにもかかわらず、中間証明書「DigiCert SHA2 Secure Server CA」がca-certificatesパッケージにありませんでした。wgetこのエラーの原因となったURLでコマンドを直接実行することで、どの証明書が欠落しているかを確認できます。次に、認証局の公式Webサイト(例:https : //www.digicert.com/digicert-root-certificates.htm)から、この証明書のCRTファイルへの対応するリンクを検索できます。さて、あなたのケースで欠落している証明書を含めるには、代わりにCRTファイルのダウンロードリンクを使用して以下のコマンドを実行します。

wget https://cacerts.digicert.com/DigiCertSHA2SecureServerCA.crt

mv DigiCertSHA2SecureServerCA.crt DigiCertSHA2SecureServerCA.der

openssl x509 -inform DER -outform PEM -in DigiCertSHA2SecureServerCA.der -out DigicertSHA2SecureServerCA.pem.crt

sudo mkdir /usr/share/ca-certificates/extra

sudo cp DigicertSHA2SecureServerCA.pem.crt /usr/share/ca-certificates/extra/

sudo dpkg-reconfigure ca-certificates

その後wget、Python urllibパッケージを使用するだけでなく、URLを使用して再度テストできます。詳細については、https//bugs.launchpad.net/ubuntu/+source/ca-certificates/+bug/1795242を参照してください。


0

vCenter 6を使用している場合は、代わりに、vCenterのVMware認証局の証明書をOSの信頼できるCAのリストに追加する必要があります。証明書をダウンロードするには、次の手順を実行します

  1. Webブラウザを開きます。
  2. https://に移動します
  3. 右下隅にある[信頼されたルートCAのダウンロード]リンクをクリックします。

Fedoraについて

  1. 解凍し、拡張子を.0から.cerに変更します
  2. / etc / pki / ca-trust / source / anchors /にコピーします
  3. update-ca-trustコマンドを実行します。

リンク:

  1. https://virtualizationreview.com/articles/2015/04/02/install-root-self-signed-certificate-vcenter-6.aspx?m=1
  2. http://forums.fedoraforum.org/showthread.php?t=293856

彼は、vCenter 6ではなくOS Xを使用していると述べた
jww

0

nltkのインストール手順(python3(3.6.2)をMAC OS Xにインストール済み)

sudo easy_install pip

以前のバージョンの6のアンインストールを無視するには、ignored installedオプションを使用します。それ以外の場合は、アンインストール中にエラーが発生し、ムービーが転送されません。

sudo pip3 install -U nltk --ignore-installed six

pipとpythonのインストールを確認し、「3」バージョンを使用します

which python python2 python3
which pip pip2 pip3

NLTKがインストールされているかどうかを確認する

python3
import nltk
nltk.__path__
['/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/nltk']

サンプルブックをインストールする前にSSL証明書をインストールしてください。そうしないと、サンプルのインストール中にエラーが発生します。

/Applications/Python\ 3.6/Install\ Certificates.command
python3 -m nltk.downloader book

これで、本の例のnltkおよびnltk_ataのインストールが正常に完了しました


0

インストールをPyOpenSSL使用してpip(PEMに変換せずに)私の仕事します:

pip install PyOpenSSL

0

Fiddler(HTTPデバッグプロキシ)を閉じることでこの問題を解決しました。プロキシが有効になっているかどうかを確認し、再試行してください。


0

Python 2.7では、ファイルC:\ Python27 \ lib \ site-packages \ certifi \ cacert.pemの最後に信頼されたルートCAの詳細を追加するのが役立ちました

その後、私は実行しました(管理者権限を使用)pip install --trusted-host pypi.python.org --trusted-host pypi.org --trusted-host files.pythonhosted.org packageName

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.