繁体   English   中英

SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败

[英]SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

我正在使用 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")

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

更新

上面链接的片段:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM