在 java 1.4 中使用 TLSV1.2 时没有这样的算法异常



我正在尝试使用支持 TLSv1.2 的网络服务。我正在使用Java 1.4。它不支持 TLSv1.2。

现在有人告诉我,BC可以解决我的问题。虽然它是否以某种方式与 SSLEngine 一起作为替代品?BC可以吗?

我必须做什么才能获得工作SSLEngine(用于 TLSv1 中的非阻塞 IO 方案(,对 DH 的素数没有如此低的限制。

我尝试过:

Security.addProvider(new BouncyCastleProvider()); 

仅凭这一点似乎并不能解决问题。

所以而不是

SSLContext.getInstance("TLSv1");  //which works alas only little DH keys. 

我尝试调用以下内容:

SSLContext.getInstance("TLSv1","BC"); 
SSLContext.getInstance("TLS","BC");
SSLContext.getInstance("TLSv1.2","BC");  
SSLContext.getInstance("ssl","BC"); 

虽然他们都扔NoSuchAlgorithmException.

我可以通过使用 bctls lib 来解决这个问题,但不幸的是,它似乎没有 Java 1.4 的版本。

我在Bouncy Castle的网站和Mvn存储库中唯一能找到的版本是bctls-jdk15on-157(对于Java>= 1.5(。

无论如何,如果可以升级Java版本,您只需将此jar添加到项目中并使用org.bouncycastle.jsse.provider.BouncyCastleJsseProvider类(我在此测试中使用了Java 1.7(:

// add the JSSE provider
Security.addProvider(new BouncyCastleJsseProvider());
// tests
SSLContext.getInstance("TLSv1.1", BouncyCastleJsseProvider.PROVIDER_NAME);
SSLContext.getInstance("TLSv1.2", BouncyCastleJsseProvider.PROVIDER_NAME);
SSLContext.getInstance("TLSv1", BouncyCastleJsseProvider.PROVIDER_NAME);

上述所有测试运行均没有错误。

检查支持的所有 SSL 协议:

SSLContext context = SSLContext.getInstance("TLSv1", BouncyCastleJsseProvider.PROVIDER_NAME);
System.out.println(Arrays.toString(context.getSupportedSSLParameters().getProtocols())); // [TLSv1.1, TLSv1, TLSv1.2]

输出为:

[TLSv1.1, TLSv1, TLSv1.2]

相关内容

  • 没有找到相关文章

最新更新