You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Spring Boot 3+Java17后Tomcat启动失败:SSLHostConfig重复问题

Spring Boot 3(Java 17)启动SSL报错:Multiple SSLHostConfig elements were provided for [default]

问题现象

升级到Spring Boot 3搭配Java 17后,应用启动抛出如下异常:

java.lang.IllegalArgumentException: Multiple SSLHostConfig elements were provided for the host name [_default_]. Host names must be unique.
	at org.apache.tomcat.util.net.AbstractEndpoint.addSslHostConfig(AbstractEndpoint.java:288)
	at org.apache.tomcat.util.net.AbstractEndpoint.addSslHostConfig(AbstractEndpoint.java:244)
	at org.apache.coyote.http11.AbstractHttp11Protocol.addSslHostConfig(AbstractHttp11Protocol.java:742)

当前仅在application.yaml中配置了:

server:
  port: 8443
  ssl:
    enabled: true

原因分析

这个问题的核心是Tomcat版本升级带来的校验规则变化:

  • Spring Boot 3默认内嵌Tomcat 10.1.x,该版本对SSLHostConfig的唯一性校验比旧版本更严格,不允许重复注册针对_default_主机的SSL配置。
  • 常见触发场景:
    • 项目中存在自定义Tomcat配置类(比如实现TomcatServletWebServerFactoryCustomizer),手动添加了SSLHostConfig,同时Spring Boot自动配置模块又根据server.ssl配置生成了默认的SSLHostConfig,两者冲突。
    • 依赖的第三方starter或配置文件中,已经隐式配置了SSL相关的SSLHostConfig,和当前server.ssl.enabled=true的配置重复注册了默认主机的SSL规则。
    • 仅开启server.ssl.enabled=true但未配置完整证书信息(如key-store、key-store-password)时,Tomcat内部自动补全默认配置的逻辑可能触发重复添加。

快速排查方向

  • 检查项目中是否存在自定义Tomcat配置类,排查是否手动添加了SSLHostConfig实例。
  • 核对依赖树,确认是否有第三方依赖自动配置了SSL。
  • 补充完整的SSL证书配置(指定密钥库路径、密码等),避免Tomcat生成不完整的默认配置导致冲突。

内容的提问来源于stack exchange,提问作者Tanmoy Banerjee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 02:15:58