【问题标题】:How to read the openssl alert messages?如何阅读 openssl 警报消息?
【发布时间】:2020-05-30 14:30:10
【问题描述】:

我正在尝试以编程方式阅读 OpenSSL 警报消息,但找不到方法。 OpenSSL API 提供如下功能:

const char *SSL_alert_type_string(int value);
const char *SSL_alert_type_string_long(int value);

const char *SSL_alert_desc_string(int value);
const char *SSL_alert_desc_string_long(int value);

但没有信息可以从哪里获取“int 值”。

例如,当 TLS 连接因证书过期而重置时,会发出警报 (45)。如何接收此警报号码,以便我可以使用上述 API 打印消息?

【问题讨论】:

    标签: openssl tls1.2


    【解决方案1】:

    您可以通过使用void SSL_CTX_set_info_callback(SSL_CTX *ctx, void (*callback)());设置回调函数并根据需要处理这些代码来获取警报信息代码。

    有关此功能的更多信息,请参见OpenSSL documentation。本页示例部分有一个完整的回调函数。它的声明是void apps_ssl_info_callback(SSL *s, int where, int ret),其中ret 是代码(给定where 也已适当设置,请参阅注释部分以获得更详尽的解释)。

    注册回调的示例在s_clients_server 应用程序中。

    【讨论】:

    • 我实现了它,函数被调用,并打印出消息。但是这个错误仍然很神秘。在wireshark 中,我可以看到文本证书已过期...警报(45)。我想将此消息发送到我的应用层以在日志中显示。
    • @query 我认为您需要更具体一些,例如你的代码+输出。如果您无法分享,我建议您查看和使用s_clients_server(它们是openssl 的一部分,因此您可以通过例如openssl s_client 在您的系统上启动它们)。然后分析底层代码。
    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2014-08-03
    相关资源
    最近更新 更多