Firefox v39将不再通过HTTPS连接到我的Web应用程序。我使用Spring Boot和嵌入式Tomcat,我确保使用最新版本的Boot(v1.2.5)。 Firefox显示以下错误消息:
安全连接失败
连接到[网站]时发生错误。 SSL在服务器密钥交换握手消息中收到了一个弱的短暂Diffie-Hellman密钥。 (错误代码:ssl_error_weak_server_ephemeral_dh_key)
我知道这是为了防范名为Logjam的已知漏洞。 Tomcat的解决方案在weakdh.org提供。
Spring Boot通过application.properties将SSL配置传递给Tomcat,因此我已将server.ssl.ciphers
添加到我的application.properties中,如下所示:
server.port=443
server.ssl.key-store=/home/ec2-user/boot.p12
server.ssl.key-store-password=...
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=...
server.ssl.ciphers=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_SHA,TLS_ECDHE_RSA_WITH_AES_256_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_SHA384,TLS_ECDHE_RSA_WITH_AES_256_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_128_SHA,TLS_DHE_DSS_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_256_SHA256,TLS_DHE_DSS_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_256_SHA
重新启动后,我在日志文件中注意到以下内容:
WARN 2674 [main] --- o.a.t.util.net.jsse.JSSESocketFactory : None of the ciphers specified are supported by the SSL engine : TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, ...
此外,使用Firefox连接失败,并显示以下消息:
安全连接失败
页面加载时,[网站]的连接中断。
我在日志文件中看到以下内容:
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
不幸的是,我没有加密专家。谁能建议如何解决这个问题?我是否需要重新创建HTTPS证书?
答案 0 :(得分:2)
解决方案是将服务器上的服务器Java从1.7升级到1.8。
sudo yum remove java-1.7.0-openjdk
sudo yum install java-1.8.0
完成此操作后,无需其他配置。根据weakdh.org的建议,甚至没有使Tomcat感到满意。