Application.yml配置证书后WebClientSsl无法识别'my-bundle'问题
解决WebClient无法识别SSL Bundle的问题
可能的原因及修复步骤
1. 确认Spring Boot版本
SSL Bundle是Spring Boot 3.1及以上版本引入的特性,若项目版本低于3.1,my-bundle会无法被识别。请检查pom.xml或build.gradle中的Spring Boot版本,升级至3.1及以上。
2. 修正application.yml配置
确保SSL Bundle的配置结构完整、格式正确:
spring: ssl: bundle: my-bundle: pem: client: truststore: # 单个证书用certificate,多个证书用certificates(数组格式) certificate: | -----BEGIN CERTIFICATE----- ... 完整的证书内容 ... -----END CERTIFICATE-----
注意用|保留证书内容的换行格式,避免证书内容被压缩导致解析失败。
3. 调整WebClient配置方式
若自动配置仍不生效,可手动基于SSL Bundle构建SslContext并配置WebClient:
@Configuration public class WebClientConfiguration { private final SslBundleRegistry sslBundleRegistry; public WebClientConfiguration(SslBundleRegistry sslBundleRegistry) { this.sslBundleRegistry = sslBundleRegistry; } @Bean public WebClient myWebClient() { SslBundle sslBundle = sslBundleRegistry.getBundle("my-bundle"); SslContext sslContext = SslContextBuilder .forClient() .trustManager(sslBundle.getTrustManagerFactory()) .build(); return WebClient.builder() .clientConnector(new ReactorClientHttpConnector(HttpClient.create().secure(t -> t.sslContext(sslContext)))) .baseUrl("**.com") .build(); } }
4. 排查配置冲突
检查项目中是否存在其他手动配置的SslContext或HttpClientBean,这类配置可能会覆盖SSL Bundle的自动加载逻辑,导致bundle无法被识别。
内容的提问来源于stack exchange,提问作者I_GOT_THIS
相关产品推荐
相关产品推荐

