我尝试将 SOAP API 与 Apache CXF 结合使用,但该 API 需要 SSL 客户端证书。我看到您可以使用一些 XML-Config,但我想以编程方式执行此操作。将
sslContext
设置在 tlsClientParameters
内似乎也不起作用。这是我的代码:
val service = SoapyService()
val port = service.soapyPort
val cond = ClientProxy.getClient(port).conduit
(cond as HTTPConduit).apply {
tlsClientParameters =
TLSClientParameters().apply {
sslContext = sslContextWithCert
}
}
val result = port.login(username, password)
但是由于缺少证书,服务器在 SSL 握手期间终止了连接。
有了 SSLContext 已经存在,我们就可以轻松地从中获取 SSLSocketFactory。 只需使用
sslSocketFactory = sslContextWithCert.socketFactory
而不是 sslContext = sslContextWithCert
。这将使 Apache CXF 使用该工厂的套接字,该工厂(如果您将证书添加到该 SSL 上下文)将随您的请求发送证书。