我有一个基于NIO的应用程序,它必须在Java 1.4平台(而不是Sun/Oracle实现)上工作,并且我希望使用SSL保护网络连接。但是Java仅从Java5开始可用。
是否存在替代的、免费的、纯javax.net.ssl.SSLEngine实现的Java?
BouncyCastle似乎提供了JCE的实现,但我在他们的包中没有发现javax.net.ssl.SSLEngine。我错过了什么吗?
发布于 2013-11-06 01:45:33
只有当您想要访问低级SSLEngine功能时,才需要SSL类,而不需要套接字包装。但是,如果您希望使用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");https://stackoverflow.com/questions/19772481
复制相似问题