【发布时间】:2018-07-03 20:22:55
【问题描述】:
因此,我必须针对托管在 HTTPS url 上的 WSDL 创建服务,并且在创建服务时遇到问题。出于实际原因,我不允许将证书添加到我的信任库中,因此当我使用自定义 SSLSocketFactory 执行以下步骤时(因此我们可以动态更改密钥库):
QName name = new QName(qName, QNAME);
Service service = new Client(httpsUrl, name);
port = service.getPort(ClientSoap.class);
我们得到熟悉的错误
unable to find valid certification path to requested target
解决此问题的方法是在我们创建服务之前添加自定义套接字工厂,这样我们的 SSL 上下文是正确的(详见此处1)
HttpsURLConnection.setDefaultSSLSocketFactory(socketFactory);
但是,这会将应用程序的默认 SSLContext 污染到我们特定的自定义上下文中,并导致应用程序中的其他 https 调用失败,因为它们使用的是我们刚刚使用的自定义上下文而不是 cacerts。
当我们最初创建服务以使用我们的自定义上下文时,有什么方法可以使用吗?
【问题讨论】:
标签: java ssl https wsdl jax-ws