我有一个正在运行的Web服务,通过Apache Tomcat 7在server.xml使用以下连接器元素:
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" keystoreFile="C:\Java\myhost.keystore" keystorePass="importkey" sslProtocol="TLS" />
多年来,这一直运行良好,但是现在出现了一种新的Logjam安全威胁,并且我正在尝试使用“部署Diffie-Hellman指南”来获取我的Web服务以获取TLS指令。
所以,我将下面一行添加到<connector>元素中:
ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-AES256-GCM-SHA384,DHE-RSA-AES128-GCM ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128- -RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA,ECDHE-ECDSA-AES256-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-SHA,DHE-DSS DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA,AES128-GCM-SHA256,AES256-GCM-SHA384,AES128-SHA256,AES256-SHA256,AES128 -SHA,AES256-SHA,AES,CAMELLIA,DES-CBC3-SHA“
Tomcat重新启动正常,但我不能再连接到我的Web服务。
检查日志后,我注意到这一行:
警告:SSL引擎不支持指定的密码:ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-AES256- ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256: ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA,ECDHE- DHE-RSA-AES128-SHA,DHE-DSS-AES128-SHA256,DHE-RSA-AES256-SHA256,DHE-DSS-AES256-SHA,DHE-RSA-AES256-SHA,AES128-GCM-SHA256,AES256-GCM- SHA384,AES128-SHA256,AES256-SHA256,AES128-SHA,AES256-SHA,AES,CAMELLIA,DES-CBC3-SHA
试图让Tomcat只使用这些密码,我错过了什么?
我如何使它们由SSL引擎支持?
正如这里所解释的,你可能必须像这样设置ciphers列表:
sslProtocols = "TLS" 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"
第一部分ECDHE规定了应该使用什么密钥交换algorithm。 […]
接下来是authenticationalgorithmRSA。 […]
AES128-GCM是主要的encryptionalgorithm,用于encryption所有stream量。 […]
最后一部分SHA256标识正在使用的消息摘要,validation消息的真实性。