3

タイトルはそれを言います。

ServerSocketとSSLServerSocketを同じポートにバインドしようとすると、エラーが発生します。クライアントがSSLなしでSSLServerSocketに接続しようとすると、accept()メソッドはエラーをスローします。クライアントがSSL経由でServerSocketに接続しようとした場合、安全な接続を確立する方法がわかりません。

それも可能ですか?

4

1 に答える 1

3

SSLSocketFactory.createSocket(Socket s, String host, int port, boolean autoClose)通常のソケット接続を受け入れ、後の段階で(およびSSLSocket.setUseClientMode(false)サーバー側で)を使用してSSL/TLSにアップグレードできます。

平文プロトコルでコマンドを定義して、アップグレードの実行について双方が合意できるようにする必要があります(STARTTLSたとえば、SMTPまたはLDAPのコマンドと同様)。

または、ポートの統合を使用して(Grizzlyで実行できるように)、クライアントがSSL/TLSクライアントのHelloメッセージで接続を開始したかどうかを検出しようとすることもできます。パケットタイプを検出するために先読みする必要があるため、実行が難しい場合があります(したがって、直接SSLEngine使用するのではなく、そのバッファを保持してその内容をに渡す必要がありSSLSocketます)。

于 2012-08-16T11:19:01.460 に答える