2017-03-01 1 views
6

SSLの「不正なハンドシェイク」エラーが発生しました。この問題への最も似通った対応は、古いライブラリである1024bit certに起因するようです。非互換性など...私はと思う。私は最新のもので、なぜこのエラーが出ているのか分からない。最新の依存関係にもかかわらず、PythonリクエストでSSLエラーが発生しました

SETUP:

  • リクエスト2.13.0
  • 認証取得2017年1月23日
  • 'のOpenSSL 1.0.2g 2016年3月1日'

私は(2048ビットの証明書このAPIを打ちますよキー):https://api.sidecar.io/rest/v1/provision/application/device/count/

このエラーが発生する: requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)

はl.44

https://github.com/sidecar-io/sidecar-python-sdk/blob/master/sidecar.pyのを参照してください。私はリクエストに verify=Falseを有効にした場合、私はバイパスすることができますが、認証が失敗した理由私はむしろ把握と思います。

ご協力いただきありがとうございます。ありがとう!

答えて

6

アクセスするサーバーが不適切にセットアップされているため、つまり設定やコードに誤りがないため、検証が失敗します。 report from SSLLabsを見て、あなたはこれは、サーバが信頼されたルートに中間証明書が欠落しているので、あなたのクライアントは、信頼チェーンを構築することができない証明書チェーンを送信することを意味し

This server's certificate chain is incomplete. Grade capped to B.

を参照してください。ほとんどのデスクトップブラウザは、この問題を回避するために、どこか他の場所から不足している証明書を取得しようとしますが、通常のTLSライブラリはこの場合失敗します。あなたは、信頼できるとして明示的にこの問題を回避するために不足しているチェーン証明書を追加する必要があります。

import requests 
requests.get('https://api.sidecar.io', verify = 'mycerts.pem') 

mycerts.pem不足している中間証明書と信頼されたルート証明書が含まれている必要があります。 mycerts.pemのテスト版は、http://pastebin.com/aZSKfyb7にあります。

+0

素晴らしい、洞察のおかげです! –

0

これは、問題の回避策として役立ちます。

print(requests.get(url, proxies,verify = False)) 
関連する問題