SOAP java客户端HTTPS / SSL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SOAP java客户端HTTPS / SSL相关的知识,希望对你有一定的参考价值。

我试图通过https调用Web服务,管理员向我发送我的服务器的WSDL文件和证书:

myserver.der
myserver.p7b 
myserver.pem
myserver-bundle.pem

我安装了证书myserver.der:

keytool -import -trustcacerts -alias myserver -file myserver.der

然后,使用wsimport,我生成了存根。

在调用Web服务之前,我的客户端正在这样做:

String javaHomePath = System.getProperty("java.home");
String keystore = javaHomePath + "\lib\security\cacerts";
String storepass= "changeit";
String storetype= "JKS";

String[][] props = {
      { "javax.net.ssl.trustStore", keystore, },
      { "javax.net.ssl.keyStore", keystore, },
      { "javax.net.ssl.keyStorePassword", storepass, },
      { "javax.net.ssl.keyStoreType", storetype, },
    };
    for (int i = 0; i < props.length; i++)
      System.getProperties().setProperty(props[i][0], props[i][1]);

问题:

1)我不知道如何处理其他文件(.p7b; .pem)?

2)似乎握手工作,但我得到这个错误:

 com.sun.xml.internal.ws.client.ClientTransportException: The server sent    HTTP status code 407: Proxy Authentication Required

感谢帮助

答案

通过此链接了解不同证书格式之间的区别 - Different Certificate Formats

你可以在这里找到这个链接 - Java SOAP client with certificate authentication

像这样创建密钥库:

keytool -import -trustcacerts -file myserver.p7b -keystore keystore -storepass <mypasswd> -alias "myalias"

请注意,myalias必须与生成密钥时使用的myalias相同。

您还可以验证密钥库是否具有证书

keytool -list -v -keystore keystore.jks

要调试ssl握手过程并查看证书,请设置VM参数-Djavax.net.debug=all

PS:此外,请通过此链接,这可能有助于您解决代理身份验证所需的错误 - Proxy authentication in Java

以上是关于SOAP java客户端HTTPS / SSL的主要内容,如果未能解决你的问题,请参考以下文章

如何创建 PHP SOAP 客户端以在 SSL 下调用 WCF Web 服务?

在构建 SOAP API 时如何使用 SSL?

如何在 .Net C# 中绕过 SSL 证书进行 HTTPS SOAP 请求?

无法为 SOAP 调用建立 SSL/TLS 安全通道

通过 CXF 在 SSL 上配置 JAX-WS

Java 使用 SSL 握手失败连接到 SOAP Web 服务