SSLの「不正なハンドシェイク」エラーが表示されます。この問題に対する最も類似した応答は、1024bit certの古いライブラリに由来するようです。非互換性など... Ithink私は最新であり、このエラーが発生する理由がわかりません。
セットアップ:
このAPI(2048ビットの証明書キー)にアクセスしています: 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')],)",)
https://github.com/sidecar-io/sidecar-python-sdk/blob/master/sidecar.py のl.44を参照してください
verify=False
リクエストでは、バイパスできますが、認証が失敗する理由を理解したいです。
どんな助けも大歓迎です。ありがとう!
アクセスするサーバーが不適切にセットアップされているため、つまり、セットアップまたはコードの問題ではないため、検証は失敗します。 SSLLabsからのレポート を見る
このサーバーの証明書チェーンは不完全です。 Bを上限とするグレード.
これは、サーバーが信頼されたルートに中間証明書がない証明書チェーンを送信するため、クライアントが信頼チェーンを構築できないことを意味します。ほとんどのデスクトップブラウザは、他の場所から不足している証明書を取得しようとすることでこの問題を回避しますが、この場合、通常のTLSライブラリは失敗します。この問題を回避するには、不足しているチェーン証明書を信頼できるものとして明示的に追加する必要があります。
import requests
requests.get('https://api.sidecar.io', verify = 'mycerts.pem')
mycerts.pem
には、欠落している中間証明書と信頼されたルート証明書が含まれている必要があります。 mycerts.pem
のテスト済みバージョンは http://Pastebin.com/aZSKfyb7 にあります。
これは、問題の回避策として役立つ場合があります。
print(requests.get(url, proxies,verify = False))