java - Tomcat:使用强密码的 TLSv1.2 不起作用

标签 java tomcat ssl jsse

我安装了 Tomcat-7,在端口 8443 上配置了对 TLSv1.2 的支持
我的连接器配置:
protocol="org.apache.coyote.http11.Http11NioProtocol"SSLEnabled="true"scheme="https"secure="true"sslProtocol="TLSv1.2"sslEnabledProtocols="TLSv1.2"

然后我配置了一个我想使用的强密码列表。 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

据我所知,Tomcat 可以使用 Java JSSE 或 OpenSSL
JSSE 协议(protocol)="org.apache.coyote.http11.Http11NioProtocol"
OpenSSL 协议(protocol)="org.apache.coyote.http11.Http11AprProtocol"
我的 tomcat 连接器配置了 JSSE 协议(protocol)。

如果我使用 SHA1 添加以下密码,它就会起作用。 (没有带 SHA1 的 GCM) TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA。

我已经下载了 Java 加密扩展策略文件。 尝试使用 Java 7 和 Java 8。

在我安装 Cryptographic Extensions 之前,我在启动 Tomcat 时遇到了以下错误

INFO: Initializing ProtocolHandler ["http-nio-8443"]
mai 20, 2014 3:57:43 PM org.apache.tomcat.util.net.jsse.JSSESocketFactory     getEnableableCiphers
WARNING: None of the ciphers specified are supported by the SSL engine :     TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

根据 Java 7 文档,应支持所有这些具有 GCM-SHA384 和 CBC-SHA384 的强密码: http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#ciphersuites

如果我稍微改变一下密码:

INFO: Initializing ProtocolHandler ["http-nio-8443"]
mai 20, 2014 4:21:11 PM org.apache.tomcat.util.net.jsse.JSSESocketFactory getEnableableCiphers
WARNING: None of the ciphers specified are supported by the SSL engine : TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA584,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA584,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA584,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA584

这表明我的密码列表受我的 Tomcat/Java 支持。

问题可能出在浏览器上吗?我已经尝试过最新的 Chromium 和 Firefox。检查一些提交后,我发现 Chromium 确实支持 SHA256、SHA384 和 AES-GCM。

最佳答案

发现 Chromium 和 Firefox 都不支持这些更高的密码。
可用的最强/最高密码是 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
不支持 SHA384 且不支持 AES_256_GCM

https://www.ssllabs.com/ssltest/viewMyClient.html
密码套件(按优先顺序)
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x9e)
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA (0xc007)
TLS_ECDHE_RSA_WITH_RC4_128_SHA (0xc011)
TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x33)
TLS_DHE_DSS_WITH_AES_128_CBC_SHA (0x32)
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x39)
TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c)
TLS_RSA_WITH_AES_128_CBC_SHA (0x2f)
TLS_RSA_WITH_AES_256_CBC_SHA (0x35)
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa)
TLS_RSA_WITH_RC4_128_SHA (0x5)
TLS_RSA_WITH_RC4_128_MD5 (0x4)

关于java - Tomcat:使用强密码的 TLSv1.2 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23762762/

相关文章:

java - 动态添加一个或多个outputText到现有页面

JavaFX WebViewer 在 Java 6 上?

java - 关闭 SSL 证书验证

java - Spring boot应用程序-Tomcat部署-无法确定合适的驱动程序类

eclipse - 如何在每个 Eclipse 不同端口上运行两个 tomcat 7.0 实例?

java - 从 AWS Lambda 调用 Google Cloud KMS

Tomcat 无法提取 .war 文件

C++ Http 请求 SSL 错误

ios - 域=NSURLError域代码 1202

c++ - 什么是 boost::asio::ssl::context::load_verify_file 以及如何使用它?