![](/img/trans.png)
[英]SSL3 Certificate Verify Failed when Connecting to JIRA API Using Python
[英]python foursquare - SSL3 certificate verify failed
我正在嘗試使用Mike Lewis的Python包裝器向Foursquare API發出無用戶請求 - https://github.com/mLewisLogic/foursquare :
client = foursquare.Foursquare(client_id=Client_ID, client_secret=Client_Secret)
categs = client.venues.categories()
間歇性地 ,我得到一個“錯誤連接到Foursquare API”的消息。 運行記錄器以捕獲更詳細的消息會產生:
“SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗”
在我的本地Windows開發機器和運行ubuntu的服務器上都沒有發生這種情況。 我是否遺漏了一些關於安全證書的基本內容? 這個問題是間歇性的,有時候只需要一分鍾就可以重試並暫時修復問題。
我已經下載了最新的20120716版本的包裝器,盡管在init.py的代碼中它仍然說API_VERSION ='20120608'。 我正在使用Python 2.73並且還使用上面代碼中的id和secret注冊了Foursquare API密鑰。 我列出了網址,使用我的本地IP:8000並嘗試使用單獨的密鑰用於本地和開發機器,但這似乎沒有區別。
非常感謝。 謝謝。
我昨天遇到了完全相同的問題。 我搜索了很多並嘗試了很多,似乎以下策略適用於我的情況(我不是100%肯定,但它不再報告錯誤)。
1)下載http://curl.haxx.se/ca/cacert.pem
wget http://curl.haxx.se/ca/cacert.pem
2)轉到Python httplib2目錄。 我的位於/usr/local/lib/python2.7/dist-packages/httplib2
cd /usr/local/lib/python2.7/dist-packages/httplib2
3)備份當前證書
cp cacerts.txt backup_cacerts.txt
4)然后將下載的文件復制到那里並將其重命名為cacerts.txt
mv cacert.pem cacerts.txt
而已。
希望能幫助到你。 如果沒有從備份文件中恢復並嘗試其他方法。
我改變了這個后,我的foursquare腳本工作正常:)
安裝或升級certifi
包:
pip install --upgrade certifi
這是urllib3
推薦的解決方案(許多項目都使用它,包括requests
,而上面鏈接的foursquare庫和許多其他庫使用這些requests
): http : //urllib3.readthedocs.io/en/latest/user- guide.html#證書驗證
如果您需要將此用於不使用urllib3的軟件包,而是使用httplib2,則將certifi/cacerts.pem
文件復制到httplib2/cacerts.txt
。 可以通過執行以下操作找到要復制的目錄:
python -c 'import httplib2; import os.path; print(os.path.dirname(httplib2.__file__))'
python -c 'import certifi; import os.path; print(os.path.dirname(certifi.__file__))'
如果您只是使用urllib2
,則不使用httplib2/
目錄,而是使用系統位置。 您可以使用以下內容檢查被刪除的文件:
strace python -c "import urllib2; urllib2.urlopen(urllib2.Request('https://google.com/'))" 2>&1 | grep 'open' | grep 'cert'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.