我想编写一个python3脚本,该脚本可以远程检查多个SSL证书的到期日期。在大多数情况下,我可以使用ssl.get_server_certificate((host, port))
但是在一种情况下,会导致以下错误:
ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:847)
如果我尝试获取证书信息
openssl s_client -connect host:port 2>/dev/null
对于bash命令行,它可以正常工作。
有问题的服务器要求用户使用用户证书进行身份验证,我怀疑缺少所述证书是导致握手失败的原因。但是,由于我只对检查服务器证书的元数据感兴趣,因此我不必提供有效的用户证书。
有什么方法可以模仿openssl s_client
的功能吗?
使用python模块?
我可以直接用subprocess.call()
调用openssl,但是由于有适用于python的openssl模块,看来应该有更好的方法。