2012-11-20 79 views
1

在嘗試通過box.net api v2.0獲取身份驗證令牌時查找有關SSL錯誤的一些信息。Box Api v2 SSL版本Python

我使用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. 

注:

  • 我也期待更深入requests LIB,看看是否有某種變通SSL的版本請求功能。
  • 如果我沒有弄錯,SSL證書中的第二位應該表明SSL版本。

回答

0

你,因爲你是在verify說法是在請求一個URL參數發送看到此錯誤,即你打的實際URL是

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

驗證應在發送與該請求的實際調用關鍵字參數獲得功能即

r = requests.get(self.box_secure_endpoint+"rest", params=payload, verify=True) 
+0

不幸的是,我曾嘗試過,並沒有在我的情況下工作。 – Nolochemical

0

問題導致驗證服務器的SSL版本支持(明確地ssl.PROTOCOL_SSLv3 | http://docs.python.org/2.7/library/ssl.html#ssl.wrap_socket)。

我打算將請求轉發給lib開發人員或創建一個補丁程序以啓用顯式指定協議的功能。

感謝您的幫助。 :)

+0

需要特別注意的是,已經開始着手使用請求的「傳輸適配器」來實現較低級別的ssl支持。 [Git Pull Request](https://github.com/kennethreitz/requests/pull/895) – Nolochemical