到期测试期间ssl.get_server_certificate()中的握手失败

时间:2019-05-31 15:38:07

标签: python-3.x openssl x509certificate

我想编写一个python3脚本,该脚本可以远程检查多个SSL证书的到期日期。在大多数情况下,我可以使用ssl.get_server_certificate((host, port))

获得pem编码的证书

但是在一种情况下,会导致以下错误:

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模块,看来应该有更好的方法。

0 个答案:

没有答案