2016-07-06 128 views
-1

我是JAX-WS SOAP Web Service的新手,任何人都可以帮助我如何通过https使用soap web服务。JAX-WS通过HTTPS/SSL/TLS的SOAP Web服务客户端

发布者与我分享了ssl certificate(.cer),使用keytool命令将其导入TrustStore

现在通过https secure layer调用saop webservice我需要.jks文件将其设置为System Environment Variable

我跟着很多资源How can i create keystore from an existing certificate (abc.crt) and abc.key files? 但它期待serverprivatekey.key文件。 我没有私钥与我,请帮助如何继续。

我在正确的方式吗?或者我的方法有问题?

回答

0

你不需要服务器的私钥。您只需将公钥certificate.cer导入信任库。 (真的,你只需要根证书)。如果您已经在JKS完成,配置通过

System.setProperty("javax.net.ssl.trustStore",path/to/your/truststore); 
System.setProperty("javax.net.ssl.trustStorePassword",password; 

注意使用方法:的HTTPS连接的的TrustManager将验证握手检查由服务器perfomed签名相当于在服务器的身份公钥。所以私钥必须是私人的,你不应该访问它。

+0

感谢您的回答。我已经将system属性设置为System.setProperty(“javax.net.ssl.trustStore”,“C:\\ Program Files \\ Java \\ jdk1.8.0_45 \\ jre \\ lib \\ security \\ cacerts “); \t \t System.setProperty(“javax.net.ssl.trustStorePassword”,“changeit”);'。但我得到了** org.apache.cxf.ws.policy.PolicyException:没有一个可以满足的策略**。 –

+0

因为是默认行为,所以不需要将'javax.net.ssl.trustStore'指向JDK'cacerts'。新问题与SSL无关。可能需要在SOAP头中设置凭证。查看http://stackoverflow.com/questions/12072500/apache-cxf-none-of-the-policy-alternatives-can-be-satisfied – pedrofb