2014-10-29 548 views
1

我正在使用pyOpenSSL,它是OpenSSL的包装。我有一个客户端程序试图连接到我的服务器,并反复在服务器上获得sslv3 alert bad certificate。直到我意识到这是由于客户的时钟设置不当导致我能够找出问题所在。我猜测客户端看到服务器的证书是在“将来”的日期,并以某种方式导致服务器上的sslv3 alert bad certificateOpenSSL识别“坏证书”的原因

有什么办法可以得到更好的描述为什么一个特定的证书失败?我假设这种情况下,由于时钟设置不正确,客户端的验证失败,但服务器端的错误与发送错误证书并在服务器端验证失败时相同。

+0

在“未来”日期......你刚刚救了我的一天! – DrP3pp3r 2015-08-24 14:37:48

回答

1

不幸的是,问题描述相当有限。通过TLS警报传输错误。每个警报只是一个没有任何附加信息的数字,定义的警报只有几个,请参阅http://en.wikipedia.org/wiki/Transport_Layer_Security#Alert_protocol。例如,对于已过期的证书有一个提示,但对于尚未生效的证书没有提示,这对于您的情况是必要的。所以客户可以发回的是证书不好。

+0

那么,我在两端都使用OpenSSL ...有什么我可以在客户端上看到错误,所以我至少可以记录它吗? – 2014-10-29 14:39:15

+0

请参阅[X509_STORE_CTX_get_error]的文档(https://www.openssl.org/docs/crypto/X509_STORE_CTX_get_error.html)。通过这种方式,您可以在验证失败的一侧获得更详细的错误代码。 – 2014-10-29 14:59:02