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

Posted

技术标签:

【中文标题】如何配置 Undertow 的 SSL / 密码套件?【英文标题】:How do I configure Undertow's SSL / cipher suite? 【发布时间】:2016-11-17 04:57:15 【问题描述】:

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

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

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

【问题讨论】:

请出示您的undertow 配置。 gf_,我没有 undertow 配置,因为我在 jboss 之外使用它 【参考方案1】:

通过使用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 的传输层,OptionsSequence 类也来自 XNIO。

请注意,我添加了 TLS 1.3,它是撰写本文时的最新版本,并且所有常青浏览器都支持(但不支持 IE)。请务必使用支持它的提供程序,如果您使用的是 JDK SSL 提供程序,请确保您使用的是 java 11+。,否则请参阅您的提供程序的文档,支持 TLS1.3 的 SSL 提供程序是 google Conscrypt 找到的@ 987654321@.

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

【讨论】:

以上是关于如何配置 Undertow 的 SSL / 密码套件?的主要内容,如果未能解决你的问题,请参考以下文章

带有undertow servlet容器的spring-boot应用程序中的“没有共同的密码套件”错误

在 Undertow 中启用 HTTPS

在 SSL Client Hello 之后,Undertow(我认为)关闭连接

spring boot - undertow https 会话不会过期或停止 ssl 握手

Wildfly vs undertow 嵌入式表演

如何使用用户名/密码 + SSL 使用 WCF 配置安全 RESTful 服务