我有一个定制的HTTP / S客户端(基于twisted.HTTPClient)连接到真实世界的服务器,因此我需要处理错误的证书。
当我连接到https://expired.badssl.com时,我收到一个OpenSSL.SSL.Error,其中args / message为[('SSL例程','SSL3_GET_SERVER_CERTIFICATE','证书验证失败')]。到目前为止一切都很好..!
在我的情况下,我需要以特定方式处理证书错误,那么如何消除其他类型的SSL.Error的歧义? 我能找到的唯一方法就是做一个字符串比较...感觉......错了。
答案 0 :(得分:0)
我能找到的唯一方法就是做一个字符串比较...... 感觉......错了。
我认为这是唯一的方法。
OpenSSL.SSL.Error
是SSL异常的基类。 AFAIK,当它直接引发时,消除错误类型的唯一方法是比较错误消息元组中的原因。
来自pyopenssl docs:
"每当直接引发此异常时,它都会有一个来自OpenSSL错误队列的错误消息列表,其中每个项目都是一个元组(lib,函数,原因)。这里的lib,函数和原因都是字符串,描述问题的位置和内容"
请参阅: https://pyopenssl.readthedocs.io/en/stable/api/ssl.html#OpenSSL.SSL.Error