我正在使用openssl库来实现tls服务器。 如何使用openssl API配置Heartbeat请求超时和重试计数来控制keepalive消息流?
答案 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连接将失败。