【问题标题】:Jetty SSL problem after upgrade - unknown protocol升级后的 Jetty SSL 问题 - 未知协议
【发布时间】:2020-05-28 13:30:37
【问题描述】:

我将 Jetty 9.3.6 升级到 Jetty 9.4.27,但 SSL 连接出现问题。

当我在某些受支持的操作上运行 curl 时,我得到 error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (error 35) 而当我在运行 Jetty 9.3.6 的服务器上运行相同的命令时,一切正常。

我以与旧版本相同的方式配置了 jetty 的新版本(包括密钥库路径和启用 https 支持)。您是否知道升级过程中可能出了什么问题或我可能错过了什么?

非常感谢您的支持。

【问题讨论】:

    标签: ssl https jetty jetty-9


    【解决方案1】:

    Jetty 9.3.x 和 9.4.x 具有不同的 Cipher Suite 排除项。

    Jetty 9.3.6.v20151106 长这样...

    https://github.com/eclipse/jetty.project/blob/jetty-9.3.6.v20151106/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java#L248-L260

            addExcludeProtocols("SSL", "SSLv2", "SSLv2Hello", "SSLv3");
            setExcludeCipherSuites(
                    "SSL_RSA_WITH_DES_CBC_SHA",
                    "SSL_DHE_RSA_WITH_DES_CBC_SHA",
                    "SSL_DHE_DSS_WITH_DES_CBC_SHA",
                    "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
                    "SSL_RSA_EXPORT_WITH_DES40_CBC_SHA",
                    "SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA",
                    "SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA");
    

    Jetty 9.4.29.v20200521 长这样...

    https://github.com/eclipse/jetty.project/blob/jetty-9.4.29.v20200521/jetty-util/src/main/java/org/eclipse/jetty/util/ssl/SslContextFactory.java#L119-L138

        /**
         * Default Excluded Protocols List
         */
        private static final String[] DEFAULT_EXCLUDED_PROTOCOLS = {"SSL", "SSLv2", "SSLv2Hello", "SSLv3"};
        /**
         * Default Excluded Cipher Suite List
         */
        private static final String[] DEFAULT_EXCLUDED_CIPHER_SUITES = {
            // Exclude weak / insecure ciphers
            "^.*_(MD5|SHA|SHA1)$",
            // Exclude ciphers that don't support forward secrecy
            "^TLS_RSA_.*$",
            // The following exclusions are present to cleanup known bad cipher
            // suites that may be accidentally included via include patterns.
            // The default enabled cipher list in Java will not include these
            // (but they are available in the supported list).
            "^SSL_.*$",
            "^.*_NULL_.*$",
            "^.*_anon_.*$"
        };
    

    您需要评估为什么需要已知易受攻击的密码套件才能发挥作用。

    另外,如果您使用的是 IBM JVM,那么所有的赌注都没有了,因为 IBM 使用非标准密码套件名称(与所有其他使用 RFC 注册密码套件名称的 JVM 不同)。

    【讨论】:

      猜你喜欢
      • 2018-08-09
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 2014-11-24
      • 2013-12-27
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      相关资源
      最近更新 更多