java - 使用 axis wsdl2java 在 java 中使用 HTTPS soab 服务

标签 java web-services ssl ssl-certificate soap-client

我正在尝试使用双向身份验证 https 安全的 Web 服务。 我已经使用 axis wsdl2java 工具创建了给定 wsdl 的 stub 类。当端口绑定(bind) stub 调用服务方法时,出现名为 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find 的错误请求目标的有效证书路径。 在这种情况下调用服务时,我无法找到如何发送客户端证书。完整的错误日志如下。

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:279)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:273)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1446)
    at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)
    at sun.security.ssl.Handshaker.processLoop(Handshaker.java:913)
    at sun.security.ssl.Handshaker.process_record(Handshaker.java:849)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
    at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186)
    at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191)
    at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404)
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138)
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at com.airvana.client.AccessBarringServiceNotificationListenerPortBindingStub.setAccessBarring(AccessBarringServiceNotificationListenerPortBindingStub.java:336)
    at com.airvana.client.LimaClient.accessBarring(LimaClient.java:109)
    at com.airvana.client.Client.main(Client.java:169)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
    at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
    at sun.security.validator.Validator.validate(Validator.java:260)
    at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1428)
    ... 23 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
    at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
    at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
    ... 29 more
</ns1:stackTrace>

最佳答案

检查 link .您必须添加受信任的 keystore 。

关于java - 使用 axis wsdl2java 在 java 中使用 HTTPS soab 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42243317/

相关文章:

java - 计算相对于没有夏令时的时区的正确时间

java - 将代理与 JavaPNS 2.2 结合使用

java - 如何告诉 maven/wsimport 在生成代码时忽略某些架构文件?

https - Web 浏览器如何生成 key 对以与 https/tls 网站通信?

java - android file.exists 不能正常工作

java - 如何获取数组中的输出值以进一步处理输出

tfs - 如何从 TFS 获取项目列表?

java - 如何使用 jax rs 调用rest

asp.net-mvc - 主域上的网站 + 子域上的安全 MVC Web 应用程序

.htaccess - 重定向和 SEO(SSL 重定向)