Python SSL:证书\u验证\u失败]证书验证失败

Python SSL:证书\u验证\u失败]证书验证失败,python,windows,ssl,https,Python,Windows,Ssl,Https,我正在使用python 2.7.10 request = urllib2.Request(url, data=urllib.urlencode(params)) f = urllib2.urlopen(request)) 导致以下异常: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) URL是一个托管在IIS中的网站,由我们的组织ca签署证书。 我已经将根证书导入到wi

我正在使用python 2.7.10

request = urllib2.Request(url, data=urllib.urlencode(params))
f = urllib2.urlopen(request))
导致以下异常:

urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
URL是一个托管在IIS中的网站,由我们的组织ca签署证书。 我已经将根证书导入到windows证书管理器中,并且我能够在浏览器中安全地打开URL,而不会遇到类似“此网站的安全证书有问题”的消息

如何解决此问题?
我不想禁用SSL验证

当您通过浏览器访问URL时,您的浏览器将成为客户端,服务器将成为网站所在的主机。现在,由于您已经为浏览器导入了CA证书,所以网站在浏览器中打开时不会出错

现在,当您从python脚本打开同一个网站时,客户机变成了您的python脚本,并且它不知道这个CA证书。Python脚本不使用Windows证书存储,因此您必须指定一个CA证书,对其进行证书验证

因此,您必须明确告诉脚本有关CA证书的内容,如下所示:

urllib2.urlopen("https://dinesh.com", cafile="test_cert.pem")
您可以在此处找到文档:

更新

上面链接中的代码段:

可选的
cafile
capath
参数指定一组 HTTPS请求的受信任CA证书
cafile
应指向 到包含CA证书束的单个文件,而
capath
应指向哈希证书文件的目录。更多信息可在中找到


这是一个互联网站点吗?您可以检查一下中间证书是否丢失。这是一个内部网站点。网络无法访问Internet使用知名搜索引擎查找请求python verify ca cert和AFAICT顶部结果告诉您如何通过自己的ca cert来验证证书。“我已将根证书导入windows证书管理器…”-python 2.7.10(和请求)不要使用它,而是使用它自己的CA存储。有没有办法改用windows证书管理器?get\u default\u verify\u path()返回不存在的路径/usr/local/ssl/cert.pem。我正在使用windows我只是假设python将使用windows证书存储。有没有办法让它改用windows证书库?@TanWeiLian:没有,目前无法使用windows证书库。