Java 11环境下Wildfly 23启动报javax.net.ssl相关异常问题咨询
报错原因排查
- 你贴出的第一条包含
AES/GCM/NoPadding KeyUpdate的日志是JDK 11 TLS模块的正常调试输出,不属于程序错误,是你添加了-Djavax.net.debug=all启动参数后打印的信息,移除该参数即可不再显示该类日志。 - 后续的
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?是真正的业务报错,核心原因是客户端使用HTTP明文协议访问了Wildfly绑定的HTTPS监听端口,常见排查方向:- 确认访问服务的请求地址前缀是否为
https://,没有误写为http:// - 检查Wildfly的undertow子系统配置,确认HTTP、HTTPS两个connector没有绑定到同一端口,没有出现端口冲突
- 排查是否有运维监控、端口扫描工具使用HTTP协议探测HTTPS端口,这类非业务请求也会触发该报错,不影响正常业务HTTPS请求的处理
- 如果确认所有客户端都使用HTTPS访问仍出现该报错,检查keystore文件是否损坏、配置的keystore密码、别名是否和实际keystore信息匹配
- 确认访问服务的请求地址前缀是否为
standalone.xml信任库配置方法
可以直接在standalone.xml中配置信任库,不需要依赖JVM启动参数,配置方式如下:
在你现有的安全域配置中新增<authentication>节点下的truststore配置即可:
<security-realm name="secRealm"> <server-identities> <ssl> <keystore provider="${javax.net.ssl.keyStoreType}" path="${javax.net.ssl.keyStore}" keystore-password="${javax.net.ssl.keyStorePassword}" alias="testcert"/> </ssl> </server-identities> <!-- 新增信任库配置 --> <authentication> <truststore path="${javax.net.ssl.trustStore}" keystore-password="${javax.net.ssl.trustStorePassword}"/> </authentication> </security-realm>
配置完成后确认undertow子系统中的HTTPS connector已绑定该安全域,即可生效。如果需要配置全局对外请求的SSL信任库,也可以在elytron子系统中配置全局SSL上下文实现。
内容的提问来源于stack exchange,提问作者Dev Fh
相关产品推荐
相关产品推荐

