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

Spring Boot用Axis调用HTTPS SOAP服务如何配置接受任意无效证书

⚠️ 重要提醒:以下配置仅可在隔离测试环境使用,会完全跳过HTTPS服务端证书校验、主机名合法性校验,直接暴露在中间人攻击风险下,严禁在生产环境使用。

Axis 1.x 客户端实现方案

你不需要把测试环境的自签证书导入JVM信任库,通过自定义Axis的SSL套接字工厂即可实现跳过证书校验的效果,不会改动全局JVM的证书配置:

  • 第一步:自定义不做证书校验的SSL套接字工厂实现
    import javax.net.ssl.*;
    import java.security.cert.X509Certificate;
    import java.net.Socket;
    import java.io.IOException;
    import java.security.GeneralSecurityException;
    
    public class SkipCertCheckSSLSocketFactory extends SSLSocketFactory {
        private static final SSLSocketFactory DELEGATE_FACTORY;
    
        static {
            try {
                // 配置空逻辑的证书信任管理器,信任所有服务端证书
                TrustManager[] trustAllManager = new TrustManager[]{
                    new X509TrustManager() {
                        @Override
                        public void checkClientTrusted(X509Certificate[] x509Certificates, String s) {}
                        @Override
                        public void checkServerTrusted(X509Certificate[] x509Certificates, String s) {}
                        @Override
                        public X509Certificate[] getAcceptedIssuers() {
                            return new X509Certificate[0];
                        }
                    }
                };
                // 初始化TLS上下文
                SSLContext sslContext = SSLContext.getInstance("TLS");
                sslContext.init(null, trustAllManager, new java.security.SecureRandom());
                DELEGATE_FACTORY = sslContext.getSocketFactory();
                // 跳过主机名校验
                HttpsURLConnection.setDefaultHostnameVerifier((hostname, sslSession) -> true);
            } catch (GeneralSecurityException e) {
                throw new RuntimeException("初始化跳过证书校验的SSL工厂失败", e);
            }
        }
    
        // 所有套接字创建逻辑全部委托给上面初始化的、不校验证书的工厂实例
        @Override
        public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {
            return DELEGATE_FACTORY.createSocket(s, host, port, autoClose);
        }
    
        @Override
        public String[] getDefaultCipherSuites() {
            return DELEGATE_FACTORY.getDefaultCipherSuites();
        }
    
        @Override
        public String[] getSupportedCipherSuites() {
            return DELEGATE_FACTORY.getSupportedCipherSuites();
        }
    
        @Override
        public Socket createSocket(String host, int port) throws IOException {
            return DELEGATE_FACTORY.createSocket(host, port);
        }
    
        @Override
        public Socket createSocket(String host, int port, java.net.InetAddress localAddr, int localPort) throws IOException {
            return DELEGATE_FACTORY.createSocket(host, port, localAddr, localPort);
        }
    
        @Override
        public Socket createSocket(java.net.InetAddress host, int port) throws IOException {
            return DELEGATE_FACTORY.createSocket(host, port);
        }
    
        @Override
        public Socket createSocket(java.net.InetAddress address, int port, java.net.InetAddress localAddr, int localPort) throws IOException {
            return DELEGATE_FACTORY.createSocket(address, port, localAddr, localPort);
        }
    }
    
  • 第二步:给Axis客户端注册这个自定义工厂,推荐优先选单服务生效的配置方式,避免影响应用内其他HTTPS逻辑:
    • 单SOAP客户端生效(推荐):在你初始化的Axis服务Stub实例上单独设置属性,仅当前调用会跳过证书校验
      // 替换成你自己的SOAP服务Stub类
      YourSoapServiceStub serviceStub = new YourSoapServiceStub();
      serviceStub._setProperty("axis.socketSecureFactory", SkipCertCheckSSLSocketFactory.class.getName());
      
    • 全局Axis生效:如果应用里所有Axis调用都要连这个测试环境的SOAP服务,可以全局配置
      AxisProperties.setProperty("axis.socketSecureFactory", SkipCertCheckSSLSocketFactory.class.getName());
      
其他场景说明
  • 如果你用的是Axis2而非Axis 1.x,逻辑完全一致:实现Axis2提供的SSLSocketFactory扩展接口,注入上面逻辑生成的不校验证书的SSLContext,再在axis2.xml中注册自定义工厂即可。
  • 不要通过修改JVM启动参数、设置全局javax.net.ssl.*系统属性的方式跳过证书校验,这种方式会影响JVM内所有HTTPS请求,风险范围不可控。
  • 测试结束切换生产环境前,必须移除这段跳过校验的配置,改用将服务端证书导入信任库的正规方式做证书合法性校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:36:28