手动验证Python3 ssl中的证书

时间:2016-06-08 08:18:10

标签: python python-3.x ssl certificate

我正在开发Python3应用程序的客户端和服务器端。他们必须使用自签名证书通过TLS进行通信。

应该始终建立连接,即使两者都没有见过另一个,因此在其信任存储中也没有其他的证书。验证应在与自定义方法握手后进行。

但是,Python的ssl library尝试在握手期间验证证书,如果传入的证书未知且没有有效的证书链,则会失败。将verify_mode设置为CERT_NONE也不是一种选择,因为我需要双方的证书才能使用自定义验证方法。

所以我的问题是:如何从对方那里获得证书,但在握手期间关闭自动验证?或者我可以传递一个被调用的自定义verifyer方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用ssl.get_server_certificate((host,port))。它将以PEM格式返回证书。