13

理想的には、単純なSSLSocketChannel.

通常のメッセージを読み書きするコンポーネントを既に持っていますがSocketChannel、これらの接続の一部では、ネットワーク上で SSL を使用する必要があります。ただし、これらの接続に対する操作は同じです。

SSLSocketChannel無料の実装(適切なセレクターを使用)または同様のものを知っている人はいますか?私はこれを見つけましが、ベンダーが SUN ではないため、セレクターはそれを受け入れません。

単純なオブジェクトを介したネットワーク データの挿入と取得から read_from/writing_to ネット ロジックを切り離して、腹を立てSSLEngineずに a を使用するようにしていますが、それを正しく実装するのは本当に難しいです。 SSLプロトコルの内部...

4

4 に答える 4

5

Jetty には、サーバー用の NIO SSL 実装があります: SslSelectorChannelConnector。その動作の詳細については、それをのぞいてみるとよいでしょう。

NIO + SSL の詳細とサンプルコードを説明しているO'Reillyの古い (しかしまともな) 記事もあります。

于 2009-05-18T18:23:14.060 に答える
0

これがあなたが探しているものかどうかはわかりませんが、役立つかもしれません... SSL / TLS対応のサーバーソケットを作成するために、私は現在次のようなコードを使用しています(keystore.jksには、確認を確保するため) - クライアントには、そのペアの公開鍵で署名された証明書を含む同様の信頼ストアがあります。

構成を少しグーグルで検索すると、作業が開始されます。

String keyStorePath = "keystore.jks";
String keyStorePassword = "password";

KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
KeyStore keyStore = new KeyStore();
keyStore.load(new FileInputStream(keyStorePath), keyStorePassword);
keyManagerFactory.init(keyStore, keyStorePassword.toCharArray());

sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagerFactory.getKeyManagers(), null, new SecureRandom());

SSLContext sslContext = getServerSSLContext(namespace.getUuid());
SSLServerSocketFactory serverSocketFactory = sslContext.getServerSocketFactory();

// Create sockets as necessary
于 2009-05-18T12:39:03.520 に答える