首页 文章

SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败

提问于
浏览
1

我使用的是python 2.7.10

request = urllib2.Request(url, data=urllib.urlencode(params))
f = urllib2.urlopen(request))

导致以下异常:urlopen错误[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:590)

URL是在IIS中托管的网站,我们的组织是ca sign cert . 我已经将根证书导入 windows certificate manager 并且我能够安全地在浏览器中打开URL without 遇到像"There is a problem with this website’s security certificate."这样的消息

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

1 回答

  • 2

    当您通过浏览器访问URL时,浏览器将成为客户端,服务器将成为托管哪个Web站点的站点 . 现在,由于您已经为浏览器导入了CA证书,这就是为什么网站在浏览器中无错误地打开的原因 .

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

    因此,您已明确告知脚本有关CA证书的内容如下:

    urllib2.urlopen("https://dinesh.com", cafile="test_cert.pem")
    

    您可以在此处找到文档:urllib2.urlopen .

    UPDATE

    以上链接的片段:

    可选的cafile和capath参数为HTTPS请求指定一组可信CA证书 . cafile应指向包含一组CA证书的单个文件,而capath应指向散列证书文件的目录 . 可以在ssl.SSLContext.load_verify_locations()中找到更多信息 .

相关问题