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

Spring Boot Flux应用X509认证被跳过问题求助

问题排查与解决方案

核心原因

日志提示No peer certificates found in SslInfo的本质是服务器未配置双向SSL认证,没有要求客户端提供证书,导致SSL连接建立时客户端未传递证书,X509认证流程直接跳过,因此你的authenticationService不会被调用。

步骤1:配置双向SSL(关键)

Spring Boot WebFlux默认仅启用单向SSL(服务器向客户端发送证书),需添加以下配置开启双向认证:

# 要求客户端必须提供证书,可选值:required(强制)/want(可选)/none(禁用)
server.ssl.client-auth=required
# 配置信任库,用于验证客户端证书合法性(需包含客户端证书的CA或直接导入客户端证书)
server.ssl.trust-store=classpath:your-truststore.jks
server.ssl.trust-store-password=your-truststore-password
# 原有的服务器证书配置保持不变
server.ssl.key-store=classpath:your-keystore.jks
server.ssl.key-store-password=your-keystore-password
server.ssl.key-password=your-key-password

注意:你复制的正常应用证书,需确保信任库配置与原应用一致,否则服务器会拒绝客户端证书。

步骤2:简化并验证Security配置

你的SecurityWebFilterChain存在冗余授权规则,可简化为:

@Bean
public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
    String endpoint1 = "/first-endpoint-i-want-to-authorize";
    String endpoint2 = "/second-endpoint-i-want-to-authorize";
    
    http.authorizeExchange(exchanges -> exchanges
            .pathMatchers(endpoint1, endpoint2).authenticated()
            .anyExchange().permitAll())
        .x509(x509 -> x509
            .principalExtractor(authenticationService)
            .authenticationManager(authenticationService))
        .httpBasic(Customizer.withDefaults())
        .securityContextRepository(NoOpServerSecurityContextRepository.getInstance());

    return http.build();
}

冗余的NegatedServerWebExchangeMatcher可通过anyExchange().permitAll()替代,逻辑完全一致且更清晰。

步骤3:验证客户端证书传递

使用curl测试是否能正确传递客户端证书:

curl --cert client-cert.pem --key client-key.pem --cacert server-ca.pem https://localhost:8441/first-endpoint-i-want-to-authorize

若请求触发authenticationService的方法调用,说明SSL配置生效;若仍报错,检查:

  • 客户端证书是否由信任库中的CA签发
  • 证书格式是否与配置的store类型匹配(如JKS/P12)
  • 请求端口是否指向应用配置的8441端口

额外检查

确认authenticationService正确实现以下接口:

  • ReactiveAuthenticationManager:处理X509认证逻辑
  • X509PrincipalExtractor:从客户端证书提取用户标识
    虽然当前问题根源不在此,但配置正确才能保证认证最终成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:07:49