2017-02-27 227 views
0

我得到[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:646) for python request.get和request.post調用。 以前上面的調用工作正常,現在我們在IIS中引入了HTTPS重定向,並且我們正在gettng這個錯誤。 所以我把電話從 requests.get(url)改爲requests.get(url, verify=False)requests.post(url, data=data)requests.post(url, data=data, verify=False)。然後POST Web APIS無法訪問。 然後我嘗試將URL從Http改爲Https,並將verify = false,在這種情況下,請求調用工作正常,但獲得了「更好地添加證書驗證」的警告。 我也嘗試從服務器端證書選項創建一個X.509(.CER)證書文件,併爲.cer文件路徑進行驗證(verify ='path \ to \ cer file),仍然是geetting「[SSL:CERTIFICATE_VERIFY_FAILED ]」。 這種方法有什麼問題嗎? 以前任何人都面臨這個問題? 如果您對此問題有任何見解,請與我們分享。Python:[SSL:CERTIFICATE_VERIFY_FAILED]證書驗證失敗(_ssl.c:646)

在此先感謝 Susmitha

回答

0

這個問題不是從你的代碼,但是從API服務器。 SSL: CERTIFICATE_VERIFY_FAILED在服務器的SSL證書沒有通過CA驗證時引發,如您所知,您應該將server-side-ssl添加到您的本地REQUESTS_CA_BUNDLE

This link: ssl-cert-verification將會有所幫助。

請記住,您應該使用.post(verify='/path')CA_BUNDLE file

如果您正在使用的證書文件一樣CER文件,你可以考慮做這樣的:

s = requests.Session() 
s.cert = '/path/client.cert' 
+0

嗨,Beomi,感謝您的回覆。什麼是CA_BUNDLE.Where它將指向?如果我使用的是證書文件,那麼在生成該文件時,我使用了服務器端證書中的X.509(.CER)證書文件,這樣可以嗎? –

0

請檢查其由系統提供的OpenSSL的版本,使用CMD:

> openssl version 
OpenSSL 0.9.8zh 14 Jan 2016 

我更新了從2014版到2016版的openssl後,我剛剛解決了這個問題。

相關問題