2017-02-07 77 views
27

python中的許多操作都需要通過https訪問事物。這包括pip安裝,或僅使用http.client.HTTPSConnection,或者內部使用這些東西的任何模塊或應用程序。Mac OSX python ssl.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]證書驗證失敗(_ssl.c:749)

如果python是從官方python pkg安裝程序安裝的,從https://python.org下載,那麼它使用的是openssl的內部版本,並且不包含根證書。任何使用SSL連接的結果都會導致此錯誤:

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749) 

如何安裝root證書以使上述錯誤消失?

回答

66

當您運行python安裝程序時,它們會向您顯示此信息。它也記錄在/Applications/Python 3.6/ReadMe.rtf,但它很容易被忽視。

只需瀏覽到Applications/Python 3.6並雙擊Install Certificates.command

有一個在這個Python的bug跟蹤系統的問題。 http://bugs.python.org/issue29480

+0

是否有一個解決辦法,如果一個人沒有根訪問?謝謝。 –

+0

嘗試並像魅力一樣工作!非常感謝你! –

+0

我運行了Install Certificates.command文件,但如果我在我的代碼中使用https URL(讀取內容),錯誤仍然存​​在(在Py36中)。如果我使用相同的URL字符串減去「s」(例如http),我的代碼就可以工作。不幸的是,我需要一些網址的https。對此有何建議? (我也運行「pip3安裝 - 升級certifi」,因爲我需要Py27和Py36運行) – ultrageek

2

一個便宜的方法是使用python3.5,如果你仍然安裝它。

推到PyPI中:

python3.5 setup.py register -r pypitest

python3.5 setup.py sdist upload -r pypitest

似乎很好地工作3.6開箱..

相關問題