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

SOAP请求中javax.servlet.request.X509Certificate返回Null问题求助

解决客户端证书获取为Null的问题

核心原因

你的Spring Boot服务当前只配置了单向SSL(仅服务器向客户端提供证书),没有开启客户端证书认证,所以服务器不会接收并解析客户端发送的证书,自然拿不到javax.servlet.request.X509Certificate属性值。

步骤1:修正服务器SSL配置

更新application.properties,开启客户端认证并完善SSL相关配置:

server.port=8443
server.ssl.enabled=true
server.ssl.protocol=TLS  # 替换过时的SSL协议,用TLS更安全
server.ssl.key-store=src/main/resources/ssl-certificate/keystore.p12
server.ssl.key-store-password=123456
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=tomcat
# 开启客户端证书认证:required表示必须提供证书,want表示可选但提供则验证
server.ssl.client-auth=required
# 配置信任库(如果你的keystore里已经包含客户端证书的CA,可直接复用keystore)
server.ssl.trust-store=src/main/resources/ssl-certificate/keystore.p12
server.ssl.trust-store-password=123456
server.ssl.trust-store-type=PKCS12

注意:如果客户端证书不是由你的keystore中的CA签发的,需要单独创建信任库(JKS/PKCS12),并将客户端证书或其CA证书导入进去,再配置trust-store路径。

步骤2:Postman客户端证书配置

  1. 打开Postman,点击右上角齿轮图标进入Settings
  2. 切换到Certificates选项卡
  3. 在Client Certificates区域点击Add Certificate:
    • Host: 填写你的服务地址,比如localhost:8443
    • PFX file: 选择客户端的证书文件(.p12/.pfx格式)
    • Passphrase: 输入证书的密码
  4. 保存配置,关闭设置窗口

步骤3:验证请求发送

发送POST请求时,确保使用HTTPS协议(比如https://localhost:8443/testmocksoap),Postman会自动匹配对应Host的客户端证书发送给服务器。

额外检查

  • 确认客户端证书未过期且有效,并且服务器信任该证书(已导入信任库)
  • 代码中ServletRequestAttributes的获取是冗余的,直接用方法参数里的servletRequest即可,不影响功能但可以简化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:20:33