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

时间:2016-07-14 10:11:46

标签: java http2 undertow

当我尝试在Chrome或Firefox中查看我的http2网页时,我目前收到一个错误页面:" ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY"

这显然意味着我的Undertow网络服务器正在使用的密码套件由于过于不安全而不被浏览器接受。

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

1 个答案:

答案 0 :(得分:0)

使用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级别上工作,这是underwow,OptionsSequence的传输层类也来自XNIO。

请注意,我添加了TLS 1.3,它是撰写本文时的最新版本,并且受所有常绿浏览器(但不是IE)支持。不过,请务必使用支持该功能的提供程序,如果您使用的是JDK SSL提供程序,请确保您使用的是Java 11+。否则,请参阅您的提供程序的文档,谷歌Conscrypt找到了支持TLS1.3的SSL提供程序{ {3}}。

需要注意的一件事是,如果您的SSL提供程序支持,启用设置的密码套件就可以使用,在我的情况下,我使用google Conscrypt,但他们不支持为TLS1.3设置设置的密码套件。他们会忽略该选项,但是在我的情况下,undertow服务器已完全停止工作,因此请查阅您的提供商文档,或者最好只是设置启用的协议,因为这可能就是您想要的。