- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试加载证书,以便在下载某些文件时绕过我们的公司防火墙。我使用 urllib2 下载这些文件,并尝试添加证书作为上下文。这曾经工作了一段时间,但现在不再工作了。我收到以下错误:
TypeError: descriptor 'load_cert_chain' requires a '_ssl._SSLContext' object but received a 'str'
Python 网站上的文档说明如下:
SSLContext.load_cert_chain(certfile, keyfile=None, password=None)
Load a private key and the corresponding certificate. The certfile string must be the path to a single file in PEM format containing the certificate as well as any number of CA certificates needed to establish the certificate’s authenticity. The keyfile string, if present, must point to a file containing the private key in. Otherwise the private key will be taken from certfile as well. See the discussion of Certificates for more information on how the certificate is stored in the certfile.
我的代码如下:
cert = SSLContext.load_cert_chain('<abs_path_to_PEM_file>')
scheme, netloc, path, params, query, frag = urlparse(url)
auth, host = urllib2.splituser(netloc)
if auth:
url = urlunparse((scheme, host, path, params, query, frag))
req = urllib2.Request(url)
base64string = base64.encodestring(auth)[:-1]
basic = "Basic " + base64string
req.add_header("Authorization", basic)
else:
req = urllib2.Request(url)
url_obj = urllib2.urlopen(req, context=cert)
with open(tmp_path, 'wb') as fp:
fp.write(url_obj.read())
return tmp_path, url_obj.info()
它在那里说 certfile 参数应该是 PEM 文件所在路径的字符串。这正是我正在做的,但我收到了这个错误。我很困惑。我在这里做错了什么?
提前致谢!
最佳答案
.load_cert_chain
不是静态方法。您需要实例化一个 SSLContext
对象。在最简单的情况下,这可以通过方法完成
ctx = ssl.create_default_context()
还有那个
ctx.load_default_certs()
然后您可以按如下方式使用它:
url_obj = urllib2.urlopen(req, context=ctx)
关于python-2.7 - 正在尝试加载 SSL 证书 : descriptor 'load_cert_chain' requires a '_ssl._SSLContext' object but received a 'str' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57308525/
运行 Python3.6。 我有一个 pem 格式的证书包,它是一个服务器证书及其 CA 证书。 ssl context load_cert_chain('aws-bundle.pem') 抛出 SS
我有一个问题,我无法独自解决 我尝试做的事情: 我想为我 future 的项目编写一个 https (SSL) 网络服务器。 我做了什么: 没有,因为这个错误 问题描述: 为了测试 SSL,我从 Py
我正在尝试加载证书,以便在下载某些文件时绕过我们的公司防火墙。我使用 urllib2 下载这些文件,并尝试添加证书作为上下文。这曾经工作了一段时间,但现在不再工作了。我收到以下错误: TypeErro
我有一个使用 docker 部署的 flask 程序。我希望它启用 https 协议(protocol)。 使用的 SSL 自签名证书命令: openssl req -x509 -newkey rsa
我是一名优秀的程序员,十分优秀!