【问题标题】:Find programmatically using openssl which TLS version was negociated使用 openssl 以编程方式查找已协商的 TLS 版本
【发布时间】:2019-01-25 16:03:12
【问题描述】:

我在非 Web 应用程序中使用 openssl 将套接字转换为 TLS(STARTTLS 协议)。一切正常,但我也想知道实际协商了允许的 TLS 版本。

有没有办法使用 openssl API 找到这些信息?

注意:对于 openssl 1.1 及更高版本,该信息可能由函数 SSL_SESSION_get_protocol_version() 返回,但我还需要为以前的 openssl 库版本找到此信息(野外代码,执行 openssl 的主要更新仅用于记录目的不是一个选项)。

【问题讨论】:

    标签: c++ c openssl


    【解决方案1】:

    你可以使用SSL_get_version():

    SSL_get_version() 返回用于连接的协议名称ssl。它只能在初始握手完成后调用。在此之前,此函数返回的结果可能不可靠。

    返回值

    可以返回以下字符串:

    SSLv2
    连接使用 SSLv2 协议。

    SSLv3
    连接使用 SSLv3 协议。

    TLSv1
    连接使用 TLSv1.0 协议。

    TLSv1.1
    连接使用 TLSv1.1 协议。

    TLSv1.2
    连接使用 TLSv1.2 协议。

    未知
    这表示未知的协议版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 2017-05-02
      • 2011-01-05
      • 2019-05-30
      • 2011-04-13
      • 2012-05-19
      相关资源
      最近更新 更多