Java 如何配置Undertow的SSL/密码套件?

Java 如何配置Undertow的SSL/密码套件?,java,http2,undertow,Java,Http2,Undertow,当我尝试在Chrome或Firefox中查看我的http2网页时,我当前会收到一个错误页面,上面写着:ERR\u SPDY\u TRANSPORT\u SECURITY\u 这显然意味着浏览器不接受我的Undertow Web服务器使用的密码套件,因为它太不安全 如何设置底拖的TLS级别并选择应使用的密码? 如果我通过谷歌搜索正确地理解了这一点,它与我如何创建我的证书几乎没有任何关系,在HTTP2之外,ssl连接工作正常。通过使用Undertow.builder,您需要的是如下的setSocke

当我尝试在Chrome或Firefox中查看我的http2网页时,我当前会收到一个错误页面,上面写着:ERR\u SPDY\u TRANSPORT\u SECURITY\u

这显然意味着浏览器不接受我的Undertow Web服务器使用的密码套件,因为它太不安全

如何设置底拖的TLS级别并选择应使用的密码? 如果我通过谷歌搜索正确地理解了这一点,它与我如何创建我的证书几乎没有任何关系,在HTTP2之外,ssl连接工作正常。

通过使用Undertow.builder,您需要的是如下的setSocketOption方法:

Undertow.builder()//add your build code like https listener, server options, etc
    .setSocketOption(Options.SSL_ENABLED_PROTOCOLS, Sequence.of("TLSv1.2","TLSv1.3"))
    .setSocketOption(Options.SSL_ENABLED_CIPHER_SUITES,Sequence.of(// your cipher suites))
上述调用将禁用1.2以下的所有TLS版本,并仅启用所需的密码套件,setSocketOption在XNIO级别上工作,该级别是undertow的传输层,选项和序列类也来自XNIO

请注意,我添加了TLS 1.3,这是本文撰写时的最新版本,受所有evergreen Browsers支持,但不是IE。请确保使用支持它的提供程序,如果您使用的是JDK SSL提供程序,请确保您使用的是java 11+,否则请参阅提供程序的文档,google Conscrypt发现了一个支持TLS1.3的SSL提供程序


需要注意的一件事是,如果您的SSL提供商支持设置启用的密码套件,则设置启用的密码套件是有效的,在我的示例中,我使用google Conscrypt,但他们不支持为TLS1.3设置启用的密码套件,在他们的文档中,他们说他们忽略了该选项,但在我的情况下,undertow服务器完全停止工作,因此请咨询您的提供商文档,或者更好地设置启用的协议,因为这可能是您想要的。

请显示您的undertow config.gf\ux,我没有undertow配置,因为我在jboss之外使用它