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) :
添加了 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 如果我在小测试中对其进行测试 class.
在 Jboss 上:
编辑文件path_to_jboss/server/default/deploy/jbossweb.sar/server.xml到有 :
<连接器协议="HTTP/1.1" SSLEnabled="true"
端口="8443" 地址="${jboss.bind.address}"
keystoreFile="${jboss.server.home.dir}/conf/jboss.pfx"
keystorePass="password" sslProtocols="TLSv1.2" maxThreads="170"/>
在那之后,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 实现。
我在 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) :
添加了 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 如果我在小测试中对其进行测试 class.
在 Jboss 上:
编辑文件path_to_jboss/server/default/deploy/jbossweb.sar/server.xml到有 :
<连接器协议="HTTP/1.1" SSLEnabled="true" 端口="8443" 地址="${jboss.bind.address}" keystoreFile="${jboss.server.home.dir}/conf/jboss.pfx" keystorePass="password" sslProtocols="TLSv1.2" maxThreads="170"/>
在那之后,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 实现。