【问题标题】:2 way SSL :: SSL Handshake Failure Error2 路 SSL :: SSL 握手失败错误
【发布时间】:2014-06-27 19:28:15
【问题描述】:

我创建了一个带有证书的信任库和带有私钥的密钥库。 我已经输入了以下代码,加载了 trsustore 管理器和密钥库管理器,然后创建了 SSL 上下文的实例。

每当我向网络服务发出请求时,都会调用以下代码。 我们正在使用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”,我的网络服务 URL 是“https://qartap.csnet.assurity.sg:8443/RTAPService/RTAPService

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

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

在将 web 服务 URl 传递给生成的存根构造函数时,我将 url 中的“HTTPS”替换为我自己定制的“myHTTPS”。

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

【问题讨论】:

  • 你尝试的时候发生了什么?当然 8433 应该是 8443?
  • [...] 在 Internet 上的一个 jar 中可用”。互联网上有很多罐子。我猜你说的是this
  • 我已经包含了上面提到的代码并向客户端发布了一个版本。周一他们将对其进行测试,如果它有效或错误是什么,我会回复你,我无法访问那里的网络服务由于安全原因,本地环境......我只想问你除了上述代码之外是否还需要其他任何东西......是的端口是8443,我正在使用链接中提到的jar文件...... .
  • 嗨 Bruno,EJP,请帮我解决这个问题...最近我们为当前的应用程序引入了另一个 Web 服务,因为我们需要 2 路 SSL 通信...最初我进行了更改以设置系统级属性,所有信任和密钥库的 system.setProperty() ......但是通过这种方法,我的新 Web 服务可以工作,但现有的 Web 服务不起作用..所以后来按照建议我更改了 register.protocol 服务的方法,并以此为我新的 web 服务仍在工作,但旧的仍然无法正常工作......下面是错误......“apache.axis2.AxisFault:peer not authenticated”

标签: java web-services ssl axis2


【解决方案1】:

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

以下链接可以参考

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

【讨论】:

    猜你喜欢
    • 2014-01-14
    • 2012-06-18
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2018-07-28
    • 2015-11-05
    • 2012-10-11
    相关资源
    最近更新 更多