Spring Boot 3嵌入式Tomcat中如何设置HTTPS SSL加密套件优先级
Spring Boot 3.x 配置Tomcat服务器端加密套件优先级替代方案
Spring Boot 3.x适配的Tomcat 10.1+版本中,AbstractHttp11Protocol类的setUseServerCipherSuitesOrder方法已被移除,相关SSL配置逻辑统一迁移到SSLHostConfig类中,你可以通过以下方式实现服务器端加密套件优先级设置:
调整WebServerFactoryCustomizer实现逻辑
继续使用WebServerFactoryCustomizer接口,但将配置目标切换为SSLHostConfig,示例代码如下:import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.stereotype.Component; @Component public class TomcatSslCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> { @Override public void customize(TomcatServletWebServerFactory factory) { factory.addConnectorCustomizers(connector -> { // 获取或创建SSLHostConfig实例 org.apache.tomcat.util.net.SSLHostConfig sslHostConfig = connector.findSslHostConfigs().length > 0 ? connector.findSslHostConfigs()[0] : new org.apache.tomcat.util.net.SSLHostConfig(); if (connector.findSslHostConfigs().length == 0) { connector.addSslHostConfig(sslHostConfig); } // 启用服务器端加密套件优先级排序 sslHostConfig.setHonorCipherOrder(true); }); } }保留原有配置参数
application.properties中的server.ssl.ciphers配置无需修改,Spring Boot 3.x会自动将该参数传递给Tomcat的SSLHostConfig,与上述代码的配置配合生效。
内容的提问来源于stack exchange,提问作者manjosh
相关产品推荐
相关产品推荐

