什么是配置Heartbeat空闲超时的openssl API

时间:2017-02-08 09:32:10

标签: c sockets ssl openssl tls1.2

我正在使用openssl库来实现tls服务器。 如何使用openssl API配置Heartbeat请求超时和重试计数来控制keepalive消息流?

1 个答案:

答案 0 :(得分:2)

我假设你真的是指你所说的TLS,而不是DTLS。尽管OpenSSL在版本1.0.2中支持心跳,但在TLS中使用心跳是很不寻常的。该支持从OpenSSL 1.1.0中删除,因此,我建议不要在新的应用程序中使用它。改为使用TCP keep alives。

Heartbeat API非常简单。你可以做三件事:

1)使用SSL_heartbeat()

发送心跳

2)使用SSL_get_tlsext_heartbeat_pending()

确定之前发送的心跳是否仍在等待回复

3)设置心跳模式以禁止对等体使用SSL_set_tlsext_heartbeat_no_requests()发送心跳请求

其他任何事情取决于应用程序。在TLS中不需要重试,因为它旨在运行在可靠的传输层上。如果连接处于活动状态,它将到达那里。如果不是,那就不会。 TCP层将处理丢失数据包的重传。超时也应该在TCP层完成。如果TCP连接超时,SSL连接将失败。