1

経由で認証トークンを取得しようとしたときの SSL エラーに関する情報を探していますbox.net api v2.0

Python 2.7、OpenSSL 1.0.1c、およびrequestsライブラリを使用しています。

    payload = {"action":"get_auth_token", "api_key":self.box_apikey, "ticket":self.box_ticket['status'], "verify":False}
    r = requests.get(self.box_secure_endpoint+"rest", params=payload)
  File "/usr/lib/python2.7/site-packages/requests/api.py", line 65, in get
    return request('get', url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/safe_mode.py", line 39, in wrapped
    return function(method, url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/api.py", line 51, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 241, in request
    r.send(prefetch=prefetch)
  File "/usr/lib/python2.7/site-packages/requests/models.py", line 641, in send
    raise SSLError(e)
requests.exceptions.SSLError: _ssl.c:316: Invalid SSL protocol variant specified.

ノート:

  • また、requestslib を詳しく調べて、SSL ver リクエスト機能の何らかの回避策があるかどうかを確認しています。
  • 私が間違っていなければ、SSL 証明書の 2 番目のビットは SSL のバージョンを示しているはずです。
4

2 に答える 2

0

このエラーが表示verifyされるのは、リクエストで引数を URL パラメータとして送信しているためです。つまり、実際にヒットしている URL は

https://api.box.com/1.0/rest?action=get_auth_token&api_key=APIKEY&ticket=ticket&verify=False

verify は、リクエスト get 関数への実際の呼び出しでキーワード引数として送信する必要があります。

r = requests.get(self.box_secure_endpoint+"rest", params=payload, verify=True)
于 2012-11-20T23:55:38.570 に答える
0

この問題により、サーバーの ssl バージョンのサポートが確認されました (explicity ssl.PROTOCOL_SSLv3 | http://docs.python.org/2.7/library/ssl.html#ssl.wrap_socket )。

要求を lib 開発者に転送するか、パッチを作成して、プロトコルを明示的に指定する機能を有効にします。

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

于 2012-11-23T14:04:35.253 に答える