簡體   English   中英

python foursquare - SSL3證書驗證失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM