【发布时间】:2016-06-22 20:47:08
【问题描述】:
我正在尝试使用 Python 从内部服务器下载一些数据。由于它是内部的,因此它使用自签名证书。 (我们不想为永远不会“在野外”出现的服务器向 Verisign 付费。)Python 2.6 版本的代码运行良好。
response = urllib2.urlopen(URL)
data = csv.reader(response)
我现在正在尝试更新到 Python 3.4(说来话长,别问了。)但是,使用 Python 3 的 urllib 失败了:
response = urllib.request.urlopen(URL)
它会引发 CERTIFICATE_VERIFY_FAILED 错误。
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600)>
在网上阅读时,显然 Python 2.6 urllib2 不会费心验证证书。某些版本的 urllib 允许将“verify=False”传递给方法签名,但这似乎不适用于 Python 3.4。
有谁知道我该如何解决这个问题?出于公司安全准则的考虑,我想避免使用 Requests 包。
【问题讨论】:
-
使用letsencrypt获取免费真实证书...
标签: python python-3.x ssl urllib self-signed