使用Python无需验证即可从对等方获取SSL证书

时间:2011-03-30 00:26:26

标签: python ssl

我正在构建一个快速python脚本以定期检查我的客户网站是否正常工作。其中一项检查是确保其SSL证书是最新的,或者在证书即将过期时提供警报。

ssl包提供了一种使用SSLSocket.getpeercert()方法获取对等证书的方法,但只有在证书可以验证的情况下才会返回证书。如果尚未获得CA证书,则验证不起作用。

我想要做的是获取对等证书,即使它无法验证,这样我就能获得获取正确CA证书所需的信息,并进行其他检查,例如检查域名匹配,到期日期是否在正确的范围等。是否有人知道获取此信息的方法?

pyCurlpyOpenSSL看起来像是可能的候选人,但无法找到示例或设法让他们返回证书。

干杯

1 个答案:

答案 0 :(得分:3)

可以使用shell脚本来获取证书,然后使用Python来迭代证书输出文件。类似的东西:

$ openssl s_client -connect host:port -showcerts > certfile

可能会奏效。您还可以阅读有关pyOpenSSL的Connection对象的文档,该对象具有get_peer_certificate()方法:

http://packages.python.org/pyOpenSSL/openssl-connection.html#l2h-187

我还没有使用过pyOpenSSL模块,但是将它保存在Python中可能是最好的选择。