微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Python请求库中使用SSLContext?

如何解决如何在Python请求库中使用SSLContext?

certifi库通常会遇到域证书问题,但是在标准urllib.request库中却没有问题。

如果将上下文设置为使用证书文件,则会收到SSL错误

import ssl
import certifi
import requests.urllib as urlrq

resp = urlrq.urlopen(url="https://<web address>/rest/info?f=json",context=ssl.create_default_context(cafile=certifi.where()))

如果我使用标准库并按如下所示设置上下文:

import ssl
import certifi
import requests.urllib as urlrq

resp = urlrq.urlopen(url="https://<web address>/rest/info?f=json",context=ssl.SSLContext(ssl.PROTOCOL_TLSv1))

没有SSL错误

如何获得要求兑现此SSLContext的请求?

解决方法

单独创建ssl.SSLContext()不会启用证书验证或默认情况下加载CA证书。这就是为什么您没有看到SSL错误的原因。默认情况下,使用ssl.create_ssl_context()会设置验证。

因此,这里的问题与SSLContextcertifi无关,而与网站的证书以及您如何构建SSLContext有关。下一步将调查为什么网站提供的证书无效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。