我正在构建一个快速python脚本以定期检查我的客户网站是否正常工作。其中一项检查是确保其SSL证书是最新的,或者在证书即将过期时提供警报。
ssl包提供了一种使用SSLSocket.getpeercert()方法获取对等证书的方法,但只有在证书可以验证的情况下才会返回证书。如果尚未获得CA证书,则验证不起作用。
我想要做的是获取对等证书,即使它无法验证,这样我就能获得获取正确CA证书所需的信息,并进行其他检查,例如检查域名匹配,到期日期是否在正确的范围等。是否有人知道获取此信息的方法?
pyCurl和pyOpenSSL看起来像是可能的候选人,但无法找到示例或设法让他们返回证书。
干杯
答案 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中可能是最好的选择。