编程语言
首页 > 编程语言> > 带有自签名证书的Python 3 urllib

带有自签名证书的Python 3 urllib

作者:互联网

我正在尝试使用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包.

解决方法:

urllib.request.urlopen有一个context关键字参数,可以接受SSLContext对象.因此,将.verify_mode设置为ssl.CERT_NONE的SSLContext对象传递,即SSLContext.verify_mode = ssl.CERT_NONE应该等于verify = False

标签:self-signed,python,python-3-x,ssl,urllib
来源: https://codeday.me/bug/20190722/1503205.html