如何确定证书验证错误

时间:2017-06-27 16:16:31

标签: python error-handling openssl pyopenssl

我有一个定制的HTTP / S客户端(基于twisted.HTTPClient)连接到真实世界的服务器,因此我需要处理错误的证书。

当我连接到https://expired.badssl.com时,我收到一个OpenSSL.SSL.Error,其中args / message为[('SSL例程','SSL3_GET_SERVER_CERTIFICATE','证书验证失败')]。到目前为止一切都很好..!

在我的情况下,我需要以特定方式处理证书错误,那么如何消除其他类型的SSL.Error的歧义? 我能找到的唯一方法就是做一个字符串比较...感觉......错了。

1 个答案:

答案 0 :(得分:0)

  

我能找到的唯一方法就是做一个字符串比较......   感觉......错了。

我认为这是唯一的方法。

OpenSSL.SSL.Error是SSL异常的基类。 AFAIK,当它直接引发时,消除错误类型的唯一方法是比较错误消息元组中的原因。

来自pyopenssl docs:

"每当直接引发此异常时,它都会有一个来自OpenSSL错误队列的错误消息列表,其中每个项目都是一个元组(lib,函数,原因)。这里的lib,函数和原因都是字符串,描述问题的位置和内容"

请参阅: https://pyopenssl.readthedocs.io/en/stable/api/ssl.html#OpenSSL.SSL.Error