簡體   English   中英

如何解決僅在Pycharm(Python3)中拋出的“SSL:CERTIFICATE_VERIFY_FAILED”錯誤

[英]How to fix 'SSL: CERTIFICATE_VERIFY_FAILED' error only thrown in Pycharm (Python3)

使用Python3解釋器在Pycharm中發出https請求時,我收到錯誤:

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1056)

我傾向於認為這是我的Pycharm配置的問題,因為當使用任何版本的Python3時,此問題僅發生在Pycharm中。 代碼在Pycharm中使用Python2.7運行良好,它可以在命令行中正常運行Python3。

通過Pycharm,我嘗試使用不同版本的Python3創建新的虛擬環境。 所有這些都基於可以成功運行獨立於Pycharm的代碼的解釋器。

此錯誤的最常見解決方案是運行在/Applications/Python 3.x/找到的Install Certificates.command ,但運行它只能確認certifi包已經是最新的。

下面代碼的最后一行引發錯誤:

headers = {"authuser":username, "authpass":password}
conn = http.client.HTTPSConnection(url)
conn.request("POST",requestpath, headers)

假設您正在運行Python 3.4.3或更高版本,並且如果您沒有驗證目標,則可以嘗試禁用證書和主機名檢查:

headers = {"authuser":user, "authpass":pass}
conn = http.client.HTTPSConnection(url, context=ssl._create_unverified_context())
conn.request("POST",requestpath, headers)

來自https://docs.python.org/3/library/http.client.html上的官方Python3文檔:

版本3.4.3中已更改:此類現在默認執行所有必需的證書和主機名檢查。 要恢復到先前未驗證的行為,可以將ssl._create_unverified_context()傳遞給context參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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