我在Ubuntu 14.04(Java OpenJDK 1.7)上有一台Tomcat 7服务器,这个服务器一直工作正常,没有问题。 几个月前,Chrome浏览器停止访问,我通过切换到Firefox来访问这个特定的网站。 最近(几天)它停止了与Firefox访问。
我已经咨询了这个问题 , 这个问题与我所遇到的问题基本相同,但是由于某种原因,解决scheme不再有效。 截至昨天,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)
我已经尝试了所有答案和参考build议的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之前,我会在周末的其余时间里彻底清除这些东西,所以我想在这里问一下可能的解决scheme。
要debugging这种情况,你可以使用openssl的命令行工具,特别是openssl s_client 。 通过添加选项-tls1 , -tls1_1和-tls1_2您可以testing协议的兼容性,并使用-cipher [cipherlist]进行密码testing。 例如
openssl s_client -connect example.com:443 -tls1
您将获得有关连接,证书和function(如重新协商,压缩等)的详细信息和警告。 这将有助于debugging问题。