我有一个在Jetty 6上运行的应用程序,可通过HTTPS访问。与IE 11连接但不适用于Firefox 43或Google 40。 SSL跟踪显示Jetty和浏览器无法找到通用密码:
%% Initialized: [Session-13, SSL_NULL_WITH_NULL_NULL]
%% Invalidated: [Session-13, SSL_NULL_WITH_NULL_NULL]
783842035@qtp-1833323686-4, SEND TLSv1.2 ALERT: fatal, description = handshake_failure
783842035@qtp-1833323686-4, WRITE: TLSv1.2 Alert, length = 2
[Raw write]: length = 7
0000: 15 03 03 00 02 02 28 ......(
783842035@qtp-1833323686-4, called closeSocket()
783842035@qtp-1833323686-4, handling exception: javax.net.ssl.SSLHandshakeException: no cipher suites in common
但是,使用IE 11时,选定的密码为TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
:
%% Initialized: [Session-30, SSL_NULL_WITH_NULL_NULL]
%% Negotiating: [Session-30, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256]
*** ServerHello, TLSv1.2
由于Chrome无法连接时会警告RC4密码:
无法建立安全连接,因为此网站使用的是>>不支持的协议或密码套件。这可能是因为>>服务器需要RC4而不再被认为是安全的。
我通过添加以下属性
在java.security中排除了RC4 jdk.tls.disabledAlgorithms=RC4
但无济于事,Chrome和FF仍无法连接。 我已经没想完了。有什么建议? TIA。
答案 0 :(得分:2)
Jetty 6很久以前 EOL(生命终结)。
如果您坚持使用Jetty 6,请知道您所需的SSL / TLS调整级别在该版本的Jetty中不存在。
你要么必须坚持使用JVM级别调整,要么编写自定义SslContextFactory
(抱歉,在Jetty 7中引入了更简单的{{1}}概念)实现自己的必要包括并且不包括密码和协议,以及新的TLS密码订购要求可靠地解决此问题。
Jetty 9.3.7.v20160115是strict weak ordering。下一个版本,可能是9.3.8,将进行必要的剩余调整以支持最近的浏览器更改,但仅限于Java 8u72(或更新版本)。
另外值得注意的是,由于你在Jetty上启用了SSL / TLS,你必须保持你的Java版本是最新的,如果没有其他原因那么在过去的几年中跟上SSL / TLS的变化