繁体   English   中英

用于JDK 1.4的SSLEngine的实现?

[英]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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM