使用openssl以编程方式查找已协商的TLS版本

时间:2019-01-25 16:03:13

标签: c++ c openssl

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

有什么方法可以使用openssl API查找此信息?

注意:在openssl 1.1和更高版本中,信息可能由函数SSL_SESSION_get_protocol_version()返回,但是我还需要查找以前的openssl库版本的信息(代码在野外,仅对openssl进行重大更新)记录目的不是一种选择。)

1 个答案:

答案 0 :(得分:1)

您可以使用SSL_get_version()

  

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

     

返回值

     

可以返回以下字符串:

     

SSLv2
  该连接使用SSLv2协议。

     

SSLv3
  该连接使用SSLv3协议。

     

TLSv1
  该连接使用TLSv1.0协议。

     

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

     

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

     

未知
  这表明协议版本未知。