【发布时间】:2019-09-03 17:16:29
【问题描述】:
运行 Python3.6。
我有一个 pem 格式的证书包,即服务器证书及其 CA 证书。 ssl context load_cert_chain('aws-bundle.pem') 引发 SSL 错误。其他库(如 urllib)在验证来自 HTTPS 事务的证书时遇到问题。
这是捆绑文件的样子(省略了行):
-----BEGIN CERTIFICATE-----
MIIESTCCAzGgAwIBAgITBn+UV4WH6Kx33rJTMlu8mYtWDTANBgkqhkiG9w0BAQsF
. . .
yLyKQXhw2W2Xs0qLeC1etA+jTGDK4UfLeC0SF7FSi8o5LL21L8IzApar2pR/
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgITBn+USionzfP6wq4rAfkI7rnExjANBgkqhkiG9w0BAQsF
. . .
akcjMS9cmvqtmg5iUaQqqcT5NJ0hGA==
-----END CERTIFICATE-----
以下是我的 ipython 成绩单的摘录:
In [33]: import ssl
In [34]: context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
In [35]: context.load_cert_chain('aws-bundle.pem')
---------------------------------------------------------------------------
SSLError Traceback (most recent call last)
<ipython-input-38-c955611be04f> in <module>
----> 1 context.load_cert_chain('aws-bundle.pem')
SSLError: [SSL] PEM lib (_ssl.c:3520)
顺便说一句,openssl 命令行工具可以很好地处理该捆绑包 - 将元数据转储为文本。
顺便说一句,我也愿意打赌 requests 库可以满足我的需求,但我正在处理的上下文中,最好不必安装额外的包。
【问题讨论】:
标签: python python-3.x ssl openssl tls1.2