gpt4 book ai didi

java - JDK 1.4 的 SSLEngine 实现?

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:16 25 4
gpt4 key购买 nike

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

最佳答案

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");

关于java - JDK 1.4 的 SSLEngine 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19772481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com