Jboss 5.1.0 GA 上的 TLSv1.2 使用 Java 6 和 BouncyCastle

TLSv1.2 on Jboss 5.1.0 GA using Java 6 and BouncyCastle

我在 Jboss 服务器和 https 连接器 运行 Java 6 上遇到问题。 我想让我的服务器仅使用 TLSv1.2 并使用密码套件 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" 来解码证书。

我知道 Java 6 不支持 TLSv1.2,但我将 Bouncy Castle JCE 和 JSSE 提供程序添加到 JDK (https://www.bouncycastle.org/latest_releases.html) :

java指令:SSLContext.getInstance("TLSv1.2");不会抛出一个NoSuchAlgorithmException 如果我在小测试中对其进行测试 class.

在 Jboss 上:

在那之后,jboss仍然只提供 SSLv3 和 TLSv1 协议用于 https 连接。

有什么解决办法吗?

谢谢

我相信 'sslProtocols' 属性转换为对 SSLParameters.setProtocols 的调用(后来由 SSLSocket.setParameters 生效),并且不影响 SSLContext.getInstance 调用。所以你仍然得到一个 SunJSSE SSLContext 因为你以较低的优先级添加了 BCJSSE。

我建议将 java.security 中的 BouncyCastleJsseProvider 条目移动到更高的优先级(比 com.sun.net.ssl.internal.ssl.Provider)。

同样在 java.security 中,您需要将默认 KMF 类型从 SunX509 设置为 PKIX(更改现有条目):

ssl.KeyManagerFactory.algorithm=PKIX

这是因为 BCJSSE 目前只能使用其自己的 KMF 实现。