2017-07-20 1 views
0

私はssl-serverとssl-clientを持っています。それはBoostsllの例とほぼ同じです。今ブーストSSL半分のソケットが可能ですか?

、(聞く)

サーバーオープン後、クライアントが参加して、データをサーバーに送信します。

データ送信が行われたときに

私は半分近く代するために、これを変更したい socket_.lowest_layer().close();

と、クライアントから

近いソケット:クローズ送る、読みオープン

とクライアントが半分前boost::asio::error::eofを送信する必要があります-閉じる。

サーバキャッチboost::asio::error::eofとサーバーからのクローズソケット。

もういいことはありますか?ブーストは半分クローズしていますか?

答えて

1

SSLでSSLハーフクローズ(出力用シャットダウン)を使用することはできません。 SSLはclose_notifyを送信し、切り捨て攻撃が検出されるようにします。これにより、双方向でSSL接続が論理的に閉じられます。基になるTCPソケットを自分でシャットダウンしただけでは、SSLはその切り捨て攻撃を考慮してSSL接続を使用できなくします。

なぜあなたが説明したものに変更したいのかわかりません。 SSLはすでに本質的にそれ自体をclose_notifyとしています。

+0

ありがとうございます。サーバーからソケットを閉じる他の方法がありますか?私はクライアントからの接近が危険になるかもしれないと思う... //私のサーバは、クライアントが閉じたときだけeofを捕まえることができます。そして私は他の方法が必要です – hybang

+1

私は問題を理解していません。 SSL層でそれを閉じてください。クライアントが最初に閉じるのを待つ必要はありませんが、まだ送信している場合は、エラーが発生します。多くのクライアントがサーバに接続している場合は – EJP

+0

です。クライアントは終了時に終了します。この時点で私はサーバがタイムアウトかそうでなければソケットやセッションを保持するのを心配しました。それは役に立たないのですか? – hybang

関連する問題