首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用https使用不同webservice后的Axis2问题,但只有一个使用证书身份验证

使用https使用不同webservice后的Axis2问题,但只有一个使用证书身份验证
EN

Stack Overflow用户
提问于 2018-10-08 19:28:47
回答 1查看 534关注 0票数 0

我有一个Java应用程序,它使用不同的WebServices。现在,我必须使用一个需要双向身份验证的WebService。我使用SSLClientAxisEngineConfig实现(https://github.com/linhkuivanen/axistools)作为参数发送给扩展org.apache.axis.client.Service的类。啊,真灵。但前提是它是某些Axis Client的第一次使用。在此之后,如果我使用一个不需要证书的'https‘的WebService,则会出现“不受信任的服务器证书链”错误。

如果首先使用不需要证书身份验证的Webservice,当我尝试使用另一个需要身份验证的when服务时,就会出现“握手失败”错误。

我假设Axis有某种可以重用第一个配置的缓存,但我无法找到解决问题的方法。

编辑:我解决了这个问题。我用wsdl2java (Axis2-1.7.8)生成了一个新的Axis客户机,而不是使用生成器。在使用WebService之前,我使用客户端证书和仙人掌注册了一个新的https协议:

代码语言:javascript
复制
Protocol protocol = new Protocol("https", socketFactoryDinamico, 443);    
Protocol.registerProtocol("https", protocol);

在使用它之后,我取消了协议的注册:

代码语言:javascript
复制
Protocol.unregisterProtocol("https");

在此之后,我可以在没有证书身份验证的情况下使用其他WebServices,而不会出现问题。

Edit2:

Eclipse生成的类:

代码语言:javascript
复制
public class NfseWSServiceLocator extends org.apache.axis.client.Service implements NfseWSService {
}

public interface NfseWSService extends javax.xml.rpc.Service {
}

以及由Axis2生成的类:

代码语言:javascript
复制
public class NfseWSServiceStub extends org.apache.axis2.client.Stub {
}
EN

回答 1

Stack Overflow用户

发布于 2018-10-09 03:52:56

“不受信任的服务器证书链”意味着客户端不信任试图建立连接的服务器证书。为了正确配置启用HTTPS的通信场景,通信双方必须相互信任。

RFC 5246定义如下:

unknown_ca

代码语言:javascript
复制
  A valid certificate chain or partial chain was received, but the
  certificate was not accepted because the CA certificate could not
  be located or couldn't be matched with a known, trusted CA.  This
  message is always fatal.

通常是需要信任服务器证书链来建立连接的客户端,因为服务器可以在匿名模式下运行,而不是从对等方请求客户端证书。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52708887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档