有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Chrome/Firefox和Jetty HTTPS

我有一个运行在Jetty 6上的应用程序,可以通过HTTPS访问。与IE11的连接是可行的,但与Firefox43或Google 40的连接是不可行的。 SSL跟踪显示Jetty和browser无法找到通用密码:

   %% 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密码:

A secure connection cannot be established because this site uses an >>unsupported protocol or cipher suite. This is likely to be caused when the >>server needs RC4, which is no longer considered secure.

我已经排除了java中的RC4。通过添加以下属性来实现安全性

    jdk.tls.disabledAlgorithms=RC4

但毫无用处,Chrome和FF仍然无法连接。 我已经没有主意了。有什么建议吗?蒂亚


共 (1) 个答案

  1. # 1 楼答案

    6号码头在很久以前就已经报废了

    如果您坚持使用Jetty 6,请知道您需要的SSL/TLS调整级别在该版本的Jetty中并不存在

    你要么坚持使用JVM级别的调整,要么编写一个自定义的SslSelectChannelConnector(抱歉,Jetty 7中引入了更简单的SslContextFactory概念)实现,以完成密码和协议的必要包含和排除,以及新的TLS密码排序要求,从而可靠地实现这一点

    码头9.3.7。v20160115是almost up to date with the recent and upcoming browser changes。下一个版本,可能是9.3.8,将有必要的剩余调整,以支持最近的浏览器更改,但仅在Java8U72(或更新版本)下

    同样值得注意的是,由于Jetty上启用了SSL/TLS,因此必须使Java版本保持最新,如果没有其他原因,那么就必须跟上SSL/TLS在过去几年中的变化