相当于 wsimport 的 org.apache.axis.components.net.SunFakeTrustSocketFactory

Equivalent of org.apache.axis.components.net.SunFakeTrustSocketFactory for wsimport

当我使用 Apache Axis 生成 Web 服务客户端存根时,我通过调用以下方法使用客户端存根禁用了我的代码中的服务器证书信任检查

AxisProperties.setProperty("axis.socketSecureFactory",
     "org.apache.axis.components.net.SunFakeTrustSocketFactory");

如何禁用由 运行 wsimport 生成的客户端存根的信任检查?

我在运行一些测试代码时使用这个。

class 中发生的所有事情都是提供伪造的 trust store manager, that trusts anything. Knowing that, you can use this article 并将某些东西放在一起。

  1. 首先是easy trust manager

    public class EasyTrustManager implements X509TrustManager {
      public void checkClientTrusted(X509Certificate[] chain, String authType) {
            //do nothing
      }
    
      public void checkServerTrusted(X509Certificate[] chain, String authType) {
           //do nothing
      }
    
      public java.security.cert.X509Certificate[] getAcceptedIssuers() {
           return null;
      }
    }
    
  2. 然后将您的信任管理器提供给 SSLContext, just like axis was doing:

    的一个实例
    SSLContext sCtxt = SSLContext.getInstance("SSL"); 
    sCtxt.init(null, new TrustManager[]{new EasyTrustManager()}, new java.security.SecureRandom()); 
    
  3. 通过调用 HttpsURLConnection#setDefaultSSLSocketFactory 设置自定义上下文,因为您的所有 Web 服务调用都基于 HttpsURLConnection 的基础实例。此调用将通过 SSLContext#getContextall https 调用

    设置上下文
    HttpsURLConnection.setDefaultSSLSocketFactory(sCtxt.getSocketFactory());