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

时间:2018-05-23 13:23:05

标签: bouncycastle tls1.2 jboss5.x java-6

我遇到了Jboss服务器和运行在Java 6上的https连接器的问题。 我想让我的服务器只使用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):

  • 添加了JAR文件( bcprov-jdk15on-159.jar bctls-jdk15on-159.jar path_to_jdk / jre / lib / ext 文件夹

  • 编辑文件 path_to_jdk / jre / lib / security / java.security 添加行:

    security.provider.10 = org.bouncycastle.jce.provider.BouncyCastleProvider security.provider.11 = org.bouncycastle.jsse.provider.BouncyCastleJsseProvider

java指令: SSLContext.getInstance(" TLSv1.2"); 如果我在一个小的测试中不再抛出NoSuchAlgorithmException考试班。

On Jboss:

  • 编辑文件 path_to_jboss / server / default / deploy / jbossweb.sar / server.xml

    <连接器协议=" HTTP / 1.1" SSLEnabled ="真"         端口=" 8443"地址=" $ {jboss.bind.address}"         keystoreFile =" $ {jboss.server.home.dir} /conf/jboss.pfx"         keystorePass ="密码" sslProtocols =" TLSv1.2" maxThreads =" 170" />

之后,jboss仍然只为https连接提供SSLv3和TLSv1协议。

任何解决方案?

由于

1 个答案:

答案 0 :(得分:0)

我相信' 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实现。