2016-12-16 22 views
0

gnutlsを基盤とするTLS APIとしてWebサーバーに接続するNGINX内のSSL/TLSストリームプロキシをテストしています。NGINXでgnutlsとopensslハンドシェイク

NGINXクライアント(実際のクライアントからgnutlsサーバーへのHTTP要求のプロキシ)が必要なようですが、gnutls(gnutls-serv)のコマンドラインテストツールを使用するとプロセス全体が機能しますが、接続を複数回ハンドシェークする。実際、ほとんどのテストでは、サーバーがテストWebページで応答する前に、エラーなく3回ハンドシェークしているようです。 wiresharkを使うか、単にメッセージをデバッグするだけで、(gnutlsサーバの視点で)クライアント側のソケットが閉じられ、別のポートで再オープンされているように見えます。最後に成功した接続について、gnutlsは再開されたセッションを使用します。これは、前述の成功したハンドシェイクの1つです。

私はこの種の動作に関するドキュメントを見つけることができません。これが単なるNGINXのものかどうか疑問に思っています。

ハンドシェイクは最終的にテストプログラムで動作しますが、無駄な(複数の高価なハンドシェイクを持つ)ようであり、非テスト環境でのハンドシェイクロジックの実装は、クライアントが何をしようとしているのかを実際に理解することは難しいでしょう。

トランスポートでタイムアウトや問題が発生しているとは思われません。テスト環境は、1つのスイッチ間に接続された同じサブネット上のいくつかの異なるVMです。

NGINXバージョンは最新のメインラインです:1.11.7。私はもともと1.10.somethingを使用していましたが、より多くの転送エラーがあったにもかかわらず、動作は同様でした。これらのエラーは、アップグレードするときれいに整理されたように見えました。

他の人からの情報や経験があれば幸いです!

+1

クライアントは何ですか?それがブラウザの場合、CSS、Javadcript、画像などのために、画像ごとに複数のリクエストを作成します。 – EJP

+0

まあ、私はちょうどwgetを使用しています。私はそれが1つのGET以外の何かをやっているとは思わない。また、リトライ回数を1に設定しました。 – kris

答えて

0

NGINXとバックエンドサーバ間でRSA鍵交換を使用するか、NGINXにSSLKEYLOGFILE LD_PRELOADを使用して、Wiresharkがデータを復号化するために必要なデータを取得します。

1つの着信接続で1つの発信接続が生成されるはずですが、NGINXでは一般的なファイル(favicon.ico、robots.txt)を取得するためにいくつかの最適化が行われることがあります。

関連する問題