web-dev-qa-db-ja.com

python(_ssl.c:590)でのHandShakeの失敗

以下の行を実行すると、

req = urllib2.Request(requestwithtoken) 
self.response = urllib2.urlopen(req,self.request).read()

次の例外が発生しています。

SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590)

問題は、curlを使用してサービスにpingを実行することでトークンを取得できることです。トークンの取得プロセス中に、すべての証明書が検証されました。次に、生成されたトークンを使用することにより、サービスに接続できません。試行中に上記のエラーが表示されます。その理由は何でしょうか?

15

私は同じ問題を抱えていました。おそらく、リモートサーバーがurllib2でサポートされていない暗号を要求しているためです。 2つの解決策があると思います。

  1. urllibで特定の暗号を有効にするサポートされているすべての暗号 (ページの一番下を参照)を有効にすることもできますが、上のリンクに示すように、curlで使用しているものを確認できます。

  2. requestsを追加のセキュリティパッケージと共にインストールするには、pip install requests[security]。これについては、さらに詳しく説明します githubでのリクエストのリクエスト

私は2番目のオプションを実行し、それは私のために働いた。

12
martin