2017-02-27 194 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后,我刚刚解决了这个问题。

相关问题