2017-02-27 20 views
0

私は[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:646)をpython request.getとrequest.post呼び出しで取得しています。 以前は上記の呼び出しがうまくいきましたが、IISでHTTPSリダイレクトが導入されました。このエラーは発生しています。 私は requests.get(url)からrequests.get(url, verify=False)requests.post(url, data=data)からrequests.post(url, data=data, verify=False)に電話を変更しました。その後、POST Web APISには到達できません。 次に、URLをHttpからHttpsに変更してverify = falseにしました。この場合、要求の呼び出しはうまく動作していますが、「証明書の検証を追加するのが良い」のような警告が表示されています。 また、サーバー側の証明書オプションからX.509(.CER)証明書ファイルを作成しようとしましたが、検証用の.cerファイルパスを指定しましたが(検証= 'path \ to \ cerファイル)、まだgeettingです」[SSL:CERTIFICATE_VERIFY_FAILED ] "。 この方法に間違いはありますか? 誰もがこの問題に早期に直面していますか? この問題に関する洞察をお持ちの場合は、お知らせください。事前 SusmithaPython:[SSL:CERTIFICATE_VERIFY_FAILED]証明書の検証に失敗しました(_ssl.c:646)

答えて

0

ないあなたのコードから、しかし、APIサーバーのから、この問題で

感謝。 SSL: CERTIFICATE_VERIFY_FAILEDは、サーバーのSSL証明書がCAによって検証されていない場合に発生します。わかっているように、ローカルREQUESTS_CA_BUNDLEにserver-side-sslを追加する必要があります。

このlink: ssl-cert-verificationが役に立ちます。

.post(verify='/path')CA_BUNDLE fileを使用することを忘れないでください。あなたはCERファイルのような証明書ファイルを使用している場合は

、あなたは次のように行うことを検討することができます

s = requests.Session() 
s.cert = '/path/client.cert' 
+0

こんにちはBeomi、お返事ありがとうございます.CA_BUNDLEは何ですか?どこが指していますか?証明書ファイルを使用している場合は、そのファイルを生成する際に、サーバー側証明書からX.509(.CER)証明書ファイルを使用しました。 –

0

、お使いのシステムが提供するのOpenSSLのバージョンを確認し、このCMDを使用してください:

> openssl version 
OpenSSL 0.9.8zh 14 Jan 2016 

2014年版から2016年版にopensslを更新した直後にこの問題が修正されました。

関連する問題