如何配置 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 的传输层,Options
和 Sequence
类也来自 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应用程序中的“没有共同的密码套件”错误
在 SSL Client Hello 之后,Undertow(我认为)关闭连接