【问题标题】:OpenSSL identify reason for "bad certificate"OpenSSL 识别“错误证书”的原因
【发布时间】:2014-10-29 14:14:21
【问题描述】:

我正在使用 pyOpenSSL,它是 OpenSSL 的包装器。我有一个客户端程序试图连接到我的服务器,并且在服务器上反复获取sslv3 alert bad certificate。直到我意识到这是由于客户的时钟设置不正确,我才能够找出问题所在。我猜客户端认为服务器的证书在“未来”中已经过时,并且不知何故导致服务器上出现sslv3 alert bad certificate

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

【问题讨论】:

  • 在“未来”中过时...你拯救了我的一天!

标签: ssl openssl pyopenssl


【解决方案1】:

在大多数情况下,sslv3 alert bad certificate 表示根本没有提供 CA 信息或者是错误的。在curl 中有一个参数--cacert,对于openssl s_client 使用-CAfile

【讨论】:

    【解决方案2】:

    不幸的是,问题描述相当有限。错误与 TLS 警报一起传输。每个警报只是一个没有任何附加信息的数字,并且定义的警报很少,请参阅http://en.wikipedia.org/wiki/Transport_Layer_Security#Alert_protocol。例如,有一个过期证书的警报,但没有一个尚未有效的证书的警报,这在您的情况下是必要的。所以客户端可以发回的只是证书是坏的。

    【讨论】:

    • 好吧,我在两端都使用 OpenSSL……我可以在客户端做些什么来查看错误,以便我至少可以记录它吗?
    • 查看X509_STORE_CTX_get_error 的文档。这样您就可以在验证失败的一侧获得更详细的错误代码。
    猜你喜欢
    • 2015-11-01
    • 2012-09-20
    • 2010-11-27
    • 1970-01-01
    • 2011-05-15
    • 2012-08-24
    • 2014-08-28
    • 2015-10-19
    • 2020-11-07
    相关资源
    最近更新 更多