我在端口8443上安装了Tomcat-7,配置了对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协议。
如果我使用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 Documentation,应支持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。
答案 0 :(得分:4)
发现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)
答案 1 :(得分:2)
您引用的standard algorithm name documentation只是名称列表,这些名称已被有效保留,但未必实施。
{J}中的SunJSSE provider(Oracle JRE中的默认JSSE提供程序)并未在Java 7中实现任何GCM密码套件。它们位于updated table for the Java 8 implementation。
您可能还需要sslProtocol="TLSv1.2"
。
答案 2 :(得分:1)
我是一名Web开发人员,面临使用Tomcat 7和Java7版本运行应用程序的类似问题,并找到了修复程序。
在tomcat的server.xml文件中添加以下属性
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"