我有一个正在运行的 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
出现了一个新的安全威胁,我正尝试使用为 TLS 部署 Diffie-Hellman 的指南指示。
因此,我在元素中添加了以下行<connector>
:
密码="ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES256-GCM-SHA384, DHE-RSA-AES128-GCM-SHA256, DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-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-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 重新启动正常,但我无法再连接到我的 Web 服务。
检查日志后,我注意到了这一行:
警告:SSL 引擎不支持任何指定的密码:ECDHE-RSA-AES128-GCM-SHA256、ECDHE-ECDSA-AES128-GCM-SHA256、ECDHE-RSA-AES256-GCM-SHA384、ECDHE-ECDSA-AES256-GCM-SHA384、DHE-RSA-AES128-GCM-SHA256、 DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-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-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 引擎支持它们?
答案1
正如解释的那样这里您可能需要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 指定应使用哪种密钥交换算法。[...]
接下来是身份验证算法 RSA。[...]
批量密码 AES128-GCM 是主要加密算法,用于加密所有流量。[...]
最后一部分 SHA256 标识正在使用的消息摘要,用于验证消息的真实性。