如何在 JAX-WS 客户端中禁用证书验证?

新手上路,请多包涵

如何使用 javax.xml.ws.Service 在 JAX-WS 客户端中禁用证书验证?

我尝试在 SSLSocketFactory 中创建一个完全信任的 TrustManager 并尝试将其与 BindingProvider 绑定

SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());

Map<String, Object> ctxt = ((BindingProvider) wsport ).getRequestContext();
ctxt.put(JAXWSProperties.SSL_SOCKET_FACTORY, sc.getSocketFactory());

但我仍然得到 Exception: unable to find valid certification path to requested target

但是当我只使用它时它会起作用

HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

或者有没有办法使 javax.xml.ws.Service 使用我创建的 HttpsURLConnection

原文由 Question Asker 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 926
1 个回答

我在这里找到了解决方案:http: //schrepfler.blogspot.com.br/2009/06/relaxing-ssl-validation-for-jaxws.html

我正在使用该解决方案在主类的静态块上调用两个静态方法,如下所示:

 static {
    SSLUtilities.trustAllHostnames();
    SSLUtilities.trustAllHttpsCertificates();
}

希望这可以帮助

编辑: 正如 David J. Liszewski 指出的那样,这 会破坏来自此 JVM 的所有连接的 SSL/TLS 。所以记住这一点。

原文由 Jose Renato 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题