我已禁用 SSL3 并将可用的密码限制为推荐的一组,但现在我无法使用 Windows XP 上的 IE8 访问我的服务器。如果我允许所有密码,那么我可以使用 IE8 连接,但当我指定一组受限制的密码时,我就不能连接。在我看来,我需要添加正确的密码,然后 IE8 才能正常工作。
当我启用所有密码并使用 IE8 访问网站时,我可以看到连接使用 TLS 1.0、128 位加密的 RC4 和 RSA:
我尝试添加此密码:TLS_RSA_WITH_RC4_128_SHA
。但我认为 Tomcat/Java 无法识别它。
我的连接器如下所示:
<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1" keystoreFile="C:\somewhere\my.keystore"
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" />
我正在使用 Tomcat 7 和 Java 6
这可能是一个转移注意力的话题,但我一直在谈论这些密码套件因为我认为 Java 6 限制了我使用这些。另外,我一直在参考密码这个文件(第 30 页)表示 XP 上的 IE8 支持。不幸的是,我无法找到这两组密码之间的匹配。
更新:
我的 XP 上的 IE8 浏览器似乎仅支持这些密码套件:
我已经更新了 Tomcat 的密码以包含所有这些,但仍然无法连接:
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,TLS_RSA_WITH_RC4_128_MD5,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_DES_CBC_SHA,TLS_RSA_EXPORT1024_WITH_RC4_56_SHA,TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA,TLS_RSA_EXPORT_WITH_RC4_40_MD5,TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5,TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_DHE_DSS_WITH_DES_CBC_SHA,TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA"
我不知道为什么我可以连接所有启用的密码,但如果我指定浏览器支持的所有密码,我仍然无法连接
答案1
SSL_RSA_WITH_RC4_128_SHA
应该可以工作 - 原因只是术语上的差异,Java 6 中需要 TLS 的密码是唯一在名称上带有 TLS 的密码。尽管名称不同,但此特定密码规范在 TLS 和 SSL 下均可工作。
此配置应允许来自 XP 上的 IE8 的连接,同时仍拒绝 SSLv3 连接,因为启用的协议受 控制sslEnabledProtocols="TLSv1.2,TLSv1.1,TLSv1"
。
验证它不接受 SSLv3 连接openssl s_client -ssl3 -connect example.com:443
。