使用SSL调用axis客户端

时间:2014-06-17 22:20:44

标签: web-services security validation ssl

我使用SSL证书的Axis实现调用webservices。我使用keytool将证书添加到我的密钥库。

显示为"证书已添加到密钥库"。但是当我运行java程序时,我得到以下异常

AxisFault

faultCode:{http://schemas.xmlsoap.org/soap/envelope/} Server.userException      faultSubcode:    faultString:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径  faultActor:  faultNode:  faultDetail:     {http://xml.apache.org/axis/} stackTrace:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径     在sun.security.ssl.Alerts.getSSLException(未知来源)     at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)     在sun.security.ssl.Handshaker.fatalSE(未知来源)     在sun.security.ssl.Handshaker.fatalSE(未知来源)     at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)     在sun.security.ssl.ClientHandshaker.processMessage(未知来源)     在sun.security.ssl.Handshaker.processLoop(未知来源)     在sun.security.ssl.Handshaker.process_record(未知来源)     at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)     在sun.security.ssl.SSLSocketImpl.startHandshake(未知来源)     在sun.security.ssl.SSLSocketImpl.startHandshake(未知来源)     一个

有关如何在调用Web服务Axis时导入SSL证书的任何建议

2 个答案:

答案 0 :(得分:0)

问题可能是证书链未正确导入cacerts文件。 服务器身份验证部分应该很简单。只需将所需的证书粘贴在提供的cacerts信任库中即可。

有关使用keytool与cacerts信任库合作的一些信息,请参阅此http://docs.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html

答案 1 :(得分:0)

感谢您的建议。我的keytool的问题是我的java程序运行的地方和添加我的keytool证书的地方不同。现在我可以调用webservices。

通过keytool添加证书的正确方法

keytool -import -alias(此处为别名)C:\ test \ certificate location -keystore" C:\ Program Files \ Java \ jre7 \ lib \ security \ cacerts"

再次感谢:)