加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将客户端证书传递给Web服务,而不设置系统范围的属性

发布时间:2020-12-15 02:24:55 所属栏目:Java 来源:网络整理
导读:我正在尝试使用JAX-RPC实现将客户端证书传递给Web服务. (Web服务采用rpc编码样式). 到目前为止,我可以通过设置系统属性来实现: System.setProperty("javax.net.ssl.keyStore","client_cert.p12");System.setProperty("javax.net.ssl.keyStorePassword","new
我正在尝试使用JAX-RPC实现将客户端证书传递给Web服务. (Web服务采用rpc编码样式).

到目前为止,我可以通过设置系统属性来实现:

System.setProperty("javax.net.ssl.keyStore","client_cert.p12");
System.setProperty("javax.net.ssl.keyStorePassword","newpasswd");
System.setProperty("javax.net.ssl.keyStoreType","PKCS12");

然后构建和调用Web服务:

CertificateInfoPortType svc = new CertificateInfoLocator().getCertificateInfo(new URL(SERVICE_URL));
svc.methodToBeInvoked();

但由于这将在EJB内部使用,因此我不想使用System.setProperty设置JVM范围的参数,因为这会影响所有Web服务客户端.

有没有办法将客户端证书作为参数传递?从我能够阅读的内容来看,我应该使用自定义KeyManager,但我不知道如何将自定义KeyManager设置为客户端.

谢谢!

解决方法

我不确定这是否适用于您如何使用jaxws,但您可以使用以下内容在jaxws客户端上设置自定义套接字工厂(配置自定义ssl上下文):

dispatch.getRequestContext().put(com.sun.xml.ws.developer.JAXWSProperties.SSL_SOCKET_FACTORY,getSSLContext().getSocketFactory());

(这是针对sun / oracle jaxws实现的).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读