首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用BouncyCastle在Java6上运行TLS1.2

使用BouncyCastle在Java6上运行TLS1.2
EN

Stack Overflow用户
提问于 2016-06-28 23:08:20
回答 1查看 10.1K关注 0票数 3

我有一个Apache Http客户端,它需要连接到需要TLS 1.2的服务器,但现在这个客户端运行在jdk 1.6上,此时不可能进行升级。所以我选择了弹力城堡。我在我的Mac上进行了设置,如下面的post所示。

下面是我的代码,它使用了一个SSLContextBuilder...

代码语言:javascript
复制
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");

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

代码语言:javascript
复制
   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不支持TLS1.1?如果我把它改成"TLSv1“,它就能工作了。

或者,有没有更好的方法(将我的apache httpclient连接到bouncycastle,这样我的java6程序就可以连接到tlsv1.2服务器)?

EN

回答 1

Stack Overflow用户

发布于 2016-08-12 05:31:02

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

因为Apache也使用JSSE,所以您也不能插入HttpClient的TLS实现。您也许可以利用BouncyCastle的TLS实现来扩展Java的JSSE类,但这需要一些努力。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38079928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档