问题
When I generate webservice client stubs using Apache Axis, I disable the server certificate trust check in my code using the client stubs by calling the following method
AxisProperties.setProperty("axis.socketSecureFactory",
"org.apache.axis.components.net.SunFakeTrustSocketFactory");
How do I disable the trust check with client stubs that were generated by running wsimport
?
I use this when I am running some test code.
回答1:
All that's happening in that class is the provision of a bogus trust store manager, that trusts anything. Knowing that, you can use this article and put something together.
First the 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; } }
Then feed your trust manager to an instance of SSLContext, just like axis was doing:
SSLContext sCtxt = SSLContext.getInstance("SSL"); sCtxt.init(null, new TrustManager[]{new EasyTrustManager()}, new java.security.SecureRandom());
Setup the custom context, by calling
HttpsURLConnection#setDefaultSSLSocketFactory
based on the fact that all your web service calls are based on an underlying instance ofHttpsURLConnection
. This call will setup the context, by way ofSSLContext#getContext
, for all https callsHttpsURLConnection.setDefaultSSLSocketFactory(sCtxt.getSocketFactory());
来源:https://stackoverflow.com/questions/30636982/equivalent-of-org-apache-axis-components-net-sunfaketrustsocketfactory-for-wsimp