undertow 中启用SSL时,ciphers和protocol 配置的实现

近期项目中要开启SSL支持,并对使用的加密协议及协议算法进行配置。

目前,jfinal中的 undertow 实现了此功能,但代码暂时注释未启用。

在@jfinal的帮助下,查阅undertow的源代码,并经过测试验证,终于解决。

下面我把相关改造分享给大家:

1、修改文件 com\jfinal\server\undertow\ssl\SslBuilder.java,将注释去掉。

      image.png

2、修改文件 com\jfinal\server\undertow\ssl\SslConfig.java,将注释去掉,并添加配置文件加载功能的代码。

      image.png

      image.png

      image.png

      image.png

3、修改配置文件 resources\config.properties,添加配置项。

      image.png

注意,这里花了2天进行确认,给大家做参考:

1、参数 undertow.ssl.enabledProtocols 的内容为空格间隔,TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3 等。

2、参数 undertow.ssl.ciphers 的内容为冒号间隔,内容参考https://gitee.com/mirrors/undertow/blob/master/core/src/main/java/io/undertow/protocols/ssl/MechanismDatabase.properties

image.png

@jfinal请查收!

评论区

JFinal

2020-11-18 16:38

jfinal undertow 已经根据你的研究添加了这两个配置:
https://gitee.com/jfinal/jfinal-undertow/blob/master/src/main/java/com/jfinal/server/undertow/ssl/SslConfig.java

试用一下最新版本,看看有没有问题,如果没有问题下一版本就上这个功能,谢谢你的贡献

JFinal

2020-11-18 16:41

这里有一个问题, undertow.ssl.ciphers 这个配置,你试过配置为多个没有?

也就是试过用冒号分隔的形式没有,例如:
undertow.ssl.ciphers = TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

JFinal

2020-11-20 14:56

尽快反馈我,然后我发布一个 2.3 到 maven 中心库

moyush

2020-11-21 12:09

@JFinal 试过,这个我增加的代码把字符串变更为list的,本质上是list

moyush

2020-11-21 12:11

@JFinal 不过“ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4”这个形式不行,我只成功了全名的情况

JFinal

2020-11-21 12:23

@moyush 下面这种冒号分隔的全名情况呢:
undertow.ssl.ciphers = TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

此外,试用一下线上的新版本,你那里试用成功,我马上发布 jfinal undertow 2.3

moyush

2020-11-25 11:31

好的,这两天一直在配合测试,刚看到@JFinal

moyush

2020-11-26 08:32

@JFinal 这个应该是全名,如果想使用匹配的名字,需要做个解析匹配,然后转成全名给数组,传入进去

JFinal

2020-11-26 21:23

@moyush jfinal undertow 2.3 已发布到 maven 中心库,可以升级使用了,记得回来反馈

梦行

2020-11-27 09:39

为啥不用 nginx 代理呢,直接把 web 容器暴露出来

sioui

2020-11-29 11:09

@梦行 确实,我们甚至用cdn再做一次转发,cdn直接支持https,wss,服务就简单多了,可能需求不一样吧。

moyush

2020-11-30 20:50

@梦行 不能用nginx,直接用undertow

热门分享

扫码入社