gpt4 book ai didi

java - 使用 BouncyCaSTLe 在 Java 6 上运行 TLS 1.2

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

我有一个 Apache Http 客户端,它需要连接到需要 TLS 1.2 的服务器,但现在这个客户端运行在 jdk 1.6 上,目前无法升级。所以我选择了充气城堡。我在我的 Mac 上进行了设置,如此 post 所示.

这是我使用 SSLContextBuilder 的代码...

import org.apache.http.ssl.SSLContextBuilder;

SSLContextBuilder sslContextBuilder = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
public boolean isTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
return true;
}
});

// set SSL context builder to use TLSv1 protocoil
sslContextBuilder = sslContextBuilder.useProtocol("TLSv1.1");

但是在最后一行我得到了这个异常...

   Caught: java.security.NoSuchAlgorithmException: TLSv1.1 SSLContext not available
java.security.NoSuchAlgorithmException: TLSv1.1 SSLContext not available
at org.apache.http.ssl.SSLContextBuilder.build(SSLContextBuilder.java:271)

看起来 SSLContextBuilder 没有看到我的 BouncyCaSTLe。还是我的 BouncyCaSTLe 不支持 TLS 1.1?如果我将其更改为“TLSv1”,那么它就可以工作了。

或者是否有更好的方法(将我的 apache httpclient 连接到 bouncycaSTLe,以便我的 java 6 程序可以连接到 tlsv1.2 服务器)?

最佳答案

BouncyCaSTLe 只是一个 JCE 提供者(提供加密算法),而不是一个 JSSE 提供者(通过 SSLSocket、SSLSocketFactory 等提供 SSL 和 TLS)。通过将 BouncyCaSTLe 添加为安全提供程序,您只需注册 BouncyCaSTLe 的 JCE 提供程序。更多信息 here .

由于 Apache HttpClient 也使用 JSSE,因此您也无法插入 BouncyCaSTLe 的 TLS 实现。您或许可以利用 BouncyCaSTLe 的 TLS 实现来扩展 Java 的 JSSE 类,但这需要一些努力。

如果你想使用 BouncyCaSTLe 的 TLS 实现,你可以找到一个例子 in this thread .

关于java - 使用 BouncyCaSTLe 在 Java 6 上运行 TLS 1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079928/

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