2路SSL :: SSL握手失败错误

时间:2012-04-07 11:02:01

标签: java web-services ssl axis2

我创建了一个带有证书的信任库和带有私钥的密钥库。 我已经添加了以下代码,加载了trsustore manger和keystore manager,然后创建了SSL Context的实例。

每当我向webservice发出请求时,都会调用以下代码。 我们正在使用axis2 API。

SSLContext context = SSLContext.getInstance(protocolVersion); 
context.init(keyManagers, trustManagers, null); 

SSLSocketFactory socketFactory = context.getSocketFactory(); 

SslContextedSecureProtocolSocketFactory secureProtocolSocketFactory = new SslContextedSecureProtocolSocketFactory(context); 

Protocol authhttps = new Protocol("https", secureProtocolSocketFactory, port);
HttpClient httpclient = new HttpClient();
httpclient.getHostConfiguration().setHost(hostname, port, authhttps);
GetMethod httpget  = new GetMethod("/RTAPService/RTAPService");

也试过这个     GetMethod httpget = new GetMethod(" /");

httpclient.executeMethod(httpget);

它给我以下错误..

org.apache.axis2.AxisFault: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

主机名是" qartap.csnet.assurity.sg"我的网络服务网址是" https://qartap.csnet.assurity.sg:8443/RTAPService/RTAPService"

问题是当我注册我的" HTTPS"协议,它影响我的整个应用程序,我可以以某种方式设置这些只为特定的主机或特定的Web服务.. ???

要么我想使用主机名设置它,要么自己创建新协议......我尝试了解决方案here中给出的方法。但它给了我以下例外......

在将Web服务URl传递给生成的存根构造函数时,我替换了" HTTPS"来自网址的我自己定制的" myHTTPS"。

The system cannot infer the transport information from the myhttps://serverUrl:7001/app/services/RTAPDevService.RTAPDevServiceHttpSoap12Endpoint/ URL.

1 个答案:

答案 0 :(得分:0)

通过将证书添加到cacerts文件并将其指向weblogic,解决了同样问题。最初的证书链未正确导入cacerts文件。 还有一些关于导入证书的问题。

以下链接可以参考

http://ankursinghal86.blogspot.in/2014/06/authentication-with-client-certificate.html