1

Java 1.4 プラットフォーム (Sun/Oracle 実装ではない) で動作する必要がある NIO ベースのアプリケーションがあり、SSL でネットワーク接続を保護したいと考えています。ただし、javax.net.ssl.SSLEngine API は Java 5 以降でのみ使用できます。

javax.net.ssl.SSLEngine API の代替の無料のピュア Java 実装は存在しますか?

BouncyCastle は JCE の実装を提供しているようですが、パッケージに javax.net.ssl.SSLEngine が見つかりませんでした。私は何か見落としてますか?

4

1 に答える 1

-1

エンジン クラスは、SSLEngineソケット ラッピングなしで低レベルの SSL 機能にアクセスする場合にのみ必要です。ただし、 を使用してネットワーク接続を保護したい場合SSLSocketFactorySSLServerSocketFactoryまたはHttpsURLConnectionクラスでさえも機能する場合があります。

短いコード スニペットの例:

SSLContext sslContext = SSLContext.getInstance("TLS");
SSLSocketFactory sf = sslContext.getSSLSocketFactory();
Socket socket = new Socket();
Socket sslSocket = sf.createSocket(socket, "ssl.example.com", 4443, true);
OutputStream out = sslSocket.getOutputStream();
out.write(/* ... */);

Sun JDK/JRE 実装を使用していない場合、「TLS」アルゴリズムの実装が存在しない可能性がありSSLContext.getInstanceNoSuchAlgorithmException. その場合、BouncyCastle セキュリティ プロバイダーを使用する必要があります。

次の呼び出しで BC プロバイダーを追加できます。

java.security.Security.addProvider(new BouncyCastleProvider());

そして、BC 固有のSSLContext実装をリクエストします。

SSLContext sslContext = SSLContext.getInstance("TLS", "BC");
于 2013-11-05T17:45:32.747 に答える