为JDK 1.4实现SSLEngine?

时间:2013-11-04 16:38:01

标签: java ssl bouncycastle sslengine

我有一个基于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。我错过了什么吗?

1 个答案:

答案 0 :(得分:-1)

仅当您想要访问低级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");