我在Amazon AMI上运行了一个tomcat安全serlet,我在prt 8443上使用TLS协议并使用.jks密钥库设置了一个安全连接器:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
compression="off"
keystoreFile="\cert\localhost.jks" keystorePass="password"
/>
当我尝试从互联网访问网址时,我得到了&#34; ERR_SSL_WEAK_SERVER_EPHEMERAL_DH_KEY&#34;错误。
我在更新Chrome 45后开始遇到此错误。现在我在45.0.2454.85 m Chrome版本上。
有人可以帮我修复此错误吗?
答案 0 :(得分:0)
找到Tomcat的安装路径(TOMCAT_PATH)。在server.xml中找到SSL HTTP / 1.1 Connector的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"/>
为了更好的安全性,请删除对RC4密码的所有引用。
从上面的列表中找到包含“RC4”的所有密码,然后从列表中删除这些密码。 RC4密码非常陈旧,一些较旧的智能手机和/或代理服务器仍然依赖于RC4密码。此处仍然使用RC4的完整列表:https://blog.cloudflare.com/the-web-is-world-wide-or-who-still-needs-rc4/为了获得最佳兼容性,请保留RC4,以获得最佳安全性,删除RC4。
答案 1 :(得分:0)
过了一会儿得到答案: 我必须在Tomcat 7中为我的连接器设置密码,如下所示:
<Connector port="8443" protocol="HTTP/1.1"
maxThreads="200" SSLEnabled="true"
scheme="https" secure="true" disableUploadTimeout="true"
acceptCount="100"
clientAuth="false" sslProtocol="TLS"
keystoreFile="localhost.jks" keystorePass="password"
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"
/>
虽然谷歌Chrome浏览器仍然告诉我它被弃用的密码。
答案 2 :(得分:0)
要解决此问题,您必须配置与JDK匹配的密码。请参阅以下链接https://stackoverflow.com/a/32473771
中的答案