2017-02-08 32 views
1

我正在使用openssl库来实现tls服务器。 如何使用openssl API配置Heartbeat请求超时和重试次数来控制Keepalive消息流?什么是openssl API来配置心跳闲置超时

+0

请[编辑]你的问题,以显示[你迄今尝试过的](http://whathaveyoutried.com)。您应该包含您遇到问题的代码[mcve],然后我们可以尝试帮助解决特定问题。你还应该阅读[问]。 –

回答

2

我假设你确实是指你说的TLS,而不是DTLS。在TLS中使用心跳是非常不寻常的,尽管OpenSSL在1.0.2版本中支持它。这种支持已从OpenSSL 1.1.0中删除,因此,我建议不要在新应用程序中使用它。改为使用TCP保持活力。

Heartbeat API真的很简单。你可以做三件事情:使用SSL_heartbeat()

2)找出是否先前发送的心跳仍悬而未决使用SSL_get_tlsext_heartbeat_pending()

3响应

1)发送心跳)设置心跳模式禁止对方使用发送心跳请求SSL_set_tlsext_heartbeat_no_requests()

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