配置 Tomcat 7 仅使用 TLS

配置 Tomcat 7 仅使用 TLS

我在 Ubuntu 14.04(Java OpenJDK 1.7)上有一个 Tomcat 7 服务器,它已经运行了一年多,没有出现任何问题。几个月前,它无法通过 Chrome 访问,我通过切换到 Firefox 来访问这个特定的网站来解决这个问题。最近(几天)前,它无法通过 Firefox 访问。

我咨询过这个问题这基本上和我遇到的问题一样,但出于某种原因,该解决方案不再有效。截至昨天,Chrome 41 和 Firefox 37 均未显示我的网站。在 Chrome 上,我收到以下响应:

A secure connection cannot be established because this site uses an unsupported protocol.
Error code: ERR_SSL_VERSION_OR_CIPHER_MISMATCH

在 Firefox 上我得到这个:

Cannot communicate securely with peer: no common encryption algorithm(s). (Error code: ssl_error_no_cypher_overlap) 

我已经尝试了所有协议组合,答案参考文献推荐对于 Tomcat 7,但没有成功。看来浏览器制造商已经加强了安全性,以至于这些参数不再起作用:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
           maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
           clientAuth="false" sslEnabledProtocols = "TLSv1,TLSv1.1,TLSv1.2"  />

我整天都在尝试不同的参数组合,但都没有成功。我还能够在两个不同的 Tomcat 安装(第二个在 Windows 上)上复制该问题,所以我很确定这不是机器问题。

在我放弃并安装 Java 8 和 Tomcat 8(这将耗费我周末的剩余时间)之前,我想在这里询问一些可能的解决方案。

答案1

要调试这种情况,您可以使用 openssl 的命令行工具,尤其是openssl s_client。通过添加选项-tls1-tls1_1和 ,-tls1_2您可以测试协议的兼容性,以及-cipher [cipherlist]密码的兼容性。例如

openssl s_client -connect example.com:443 -tls1

您将获得有关连接、证书和功能(如重新协商、压缩等)的详细信息和可能的警告。这将有助于调试问题。

答案2

要在 tomcat 中启用 Tls,请在 tomcat/conf/ 文件夹下的 tomcat server.xml 文件的 Connector 部分添加此参数 sslEnabledProtocols="TLSv1.X"。例如:要配置 TLSv1.1,请按照以下配置进行操作。

    <Connector port="8443" 
 protocol="org.apache.coyote.http11.Http11Protocol"
 maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
 keystoreFile="ssl/.keystore" keystorePass="changeit"
 clientAuth="false" sslProtocol="SSL" sslEnabledProtocols="TLSv1.1" />

重启服务器

相关内容