Implementation of SSLEngine for JDK 1.4?



我有一个基于 NIO 的应用程序,它必须在 Java 1.4 平台上工作(不是 Sun/Oracle 实现),我想用 SSL 保护网络连接。但是javax.net.ssl.SSLEngine API仅在Java 5开始可用。

是否存在javax.net.ssl.SSLEngine API的替代,自由,纯Java实现?

BouncyCastle似乎提供了JCE的实现,但我没有在他们的软件包中找到javax.net.ssl.SSLEngine。我错过了什么吗?

仅当您

想要访问低级 SSL 功能而不使用套接字包装时,才需要 SSLEngine 引擎类。但是如果你想使用SSLSocketFactory保护网络连接,SSLServerSocketFactory甚至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.getInstance可能会抛出NoSuchAlgorithmException。在这种情况下,您应该使用BouncyCastle安全提供程序。

您可以通过调用添加 BC 提供程序:

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

并请求特定于 BC 的SSLContext实现:

SSLContext sslContext = SSLContext.getInstance("TLS", "BC");

相关内容

  • 没有找到相关文章