2009-05-01 27 views
0

Java SEでは、SSLを珍しい方法で使用する必要があります。
必要な手順は次のようなものになるだろう:SSLセッションを確立しJava SSLの再ネゴシエーション(SSLからクリアチャネルへ)

  • 一部の個人情報を交換します。
  • 暗号化操作の使用を停止する接続パラメータを再交渉します。

私はJava APIでこの方法を見つけられませんでした。セッションの再ネゴシエーションを使用して暗号化操作を行わない暗号スイートを使用することで、問題の解決方法が何とか解決されると思いますが、そのようなオプションはありません。またはアンダーリングソケットにアクセスし、暗号操作をバイパスすることができる。

これらのオプションはどれですか?このような機能は他の言語やフレームワーク(C、PHP、Ruby、.NET、Perl、Pythonなど)で利用できると思いますか?助けのための

おかげで、
ルイスM.コスタ

答えて

3

あなたはJavaでこのような何かを行うことができ、それは間違いなく、標準ではありません。私はこれに必要なサポートを持っている他のプラットフォームを保証することはできません。

JSSEは、SSLEngineのトランスポート独立SSLをサポートしています。これを使用してSSLでソケットを一時的に「装飾」し、完了したらソケットをオフにして、そのままのソケットIOを直接使用することができます。

SSLセッションをネゴシエートした後に、SSLを無効にしたい理由がわかりません。パフォーマンスのためのものであれば、両方の当事者が許可している限り、暗号スイートを「NULL」機密性と完全性プロトコルを使用するように再交渉することができます。あなたはまだSSLレコード層に少しオーバーヘッドがあります。ただし、セッションパラメータがネゴシエートされた後のSSLのオーバーヘッドは非常に低くなります。アプリケーションがこのオーバーヘッドに敏感な場合は、専用のSSLハードウェアを検討することをお勧めします。

+0

私は、SSLの実際のオーバーヘッドがすべて交渉中であることに同意し、強調しなければなりません。リンクを横切って移動する実際のデータに対して対称暗号化/復号化を実行する作業はほとんど必要ありません。 –

1

なぜ接続を切断して再接続しないのですか? SSLを再ネゴシエートする際のTCP接続を確立する際のオーバーヘッドは少なくなります。

2

既存のソケットでSSLを無効にする理由の1つは、FTPクリアコントロールチャネル(CCC)コマンド(FTP over TLS)を実装するためです。これは、ファイアウォールが動的ポート要求を見ることができるように、制御チャネルを平文に戻す。

+0

私はこれについて聞いたことがありませんでした。この例を指摘してくれてありがとう。 – erickson

0

トランスペアレント暗号を再ネゴシエートするには、デフォルトで有効になっていないため、少なくとも有効にする必要があります。しかし、私はそれのための良い "ヌル"暗号がないと思うし、下にあるソケットからSSLソケットを切り離す方が良いでしょう。

SSLEngine#setEnabledCipherSuites(new String(){"SSL_RSA_WITH_NULL_SHA"}); 
SSLEngine#beginHandshake(); 
関連する問題