2017-02-08 14 views
1

私はtlsサーバーを実装するためにopensslライブラリを使用しています。 キープアライブメッセージフローを制御するために、openssl APIを使用してハートビート要求のタイムアウトと再試行回数を設定する方法はありますか?ハートビートアイドルタイムアウトを設定するopenssl APIとは

+0

[あなたがこれまでに試したこと](http://whathaveyoutried.com)を表示するようあなたの質問を編集してください。問題のあるコードの[mcve]を含める必要があります。次に、特定の問題を解決するために役立つことができます。 [ask]も読んでください。 –

答えて

2

あなたはDTLSではなく、あなたが本当にTLSを意味すると仮定しています。 OpenSSLはバージョン1.0.2でサポートしていますが、TLSでハートビートを使用することは非常に珍しいことです。そのサポートはOpenSSL 1.1.0から削除されています。そのため、私は新しいアプリケーションでこれを使用することをお勧めします。代わりにTCPキープアライブを使用してください。

ハートビートAPIは、非常に単純です。あなたは三つ行うことができます)SSL_heartbeat()

2を使用して、以前に送信されるハートビートはまだSSL_get_tlsext_heartbeat_pending()

3を使用して応答を保留しているかどうかを調べ

1)ハートビートを送信します)を設定しますピアがハートビート要求を送信するのを許可しないハートビートモードSSL_set_tlsext_heartbeat_no_requests()

これ以外はアプリケーションによって異なります。再試行は、信頼できるトランスポート層で実行されるように設計されているため、TLSでは必要ありません。接続が生きている場合、そこに到達します。そうでなければ、それはしません。 TCPレイヤーは、紛失したパケットの再送信を処理します。タイムアウトは実際にはTCP層でも行われるべきです。 TCP接続がタイムアウトすると、SSL接続は失敗します。

関連する問題