不能让tomcat提供TLS_ECDHE_ECDSA_ …密码

我的Tomcat(7.0.52)连接器被configuration为与密码列表等密码= “TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA”

所有这些都由安装在服务器上的openjdk1.7支持(已validation)。

keystore使用keytool初始化

keytool -genkey -alias Tomcat -keyalg RSA -sigalg SHA256withRSA -keysize 2048 ... 

在ssl握手debugging输出中,我可以看到客户端提供了这些密码,但服务器仅selectTLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,这不是最强的:

 ClientHello, TLSv1.2Jul 04, 2014 2:38:31 PM org.apache.coyote.AbstractProtocol start Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA,... Extension elliptic_curves, curve names: {secp256r1, secp384r1, secp521r1} Extension ec_point_formats, formats: [uncompressed] Unsupported extension type_35, data: Unsupported extension type_13172, data: Extension signature_algorithms, signature_algorithms: SHA256withRSA, SHA384withRSA, SHA1withRSA, SHA256withECDSA, SHA384withECDSA, SHA1withECDSA, Unknown (hash:0x4, signature:0x2), SHA1withDSA *** Jul 04, 2014 2:38:31 PM org.apache.catalina.startup.Catalina start %% Initialized: [Session-1, SSL_NULL_WITH_NULL_NULL] matching alias: tomcat % Negotiating: [Session-1, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA] 

如果我从tomcat的密码列表中删除TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,则使用TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA。 如果我删除了两个TLS_ECDHE_RSA_WITH_AES_xxx,那么我得到一个握手失败(没有共同的密码)。

我无法弄清楚configuration中有什么缺失或不好的地方。

任何input非常赞赏…

您的密码应按优先顺序排列。

但是您在TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA之前列出了TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

尝试在列表中颠倒他们的顺序。

您也可能希望对整个列表进行重新sorting,以使所有的256位密码出现在所有128位密码之前。

您还需要在<Connector>设置SSLHonorCipherOrder="true"