我在客户端应用程序中使用 Axis 1.4 进行 SOAP 调用。我通过 HTTPS 调用服务。一些服务使用自签名证书,其他服务使用证书颁发机构颁发的证书。
我已使用此答案中的代码将自签名证书添加到我的信任库中。我的问题是信任库被用于所有调用——即使是对具有来自 CA 的有效证书的服务器的调用。
无论如何告诉 Axis 仅将信任库用于具有自签名证书的服务器?
我在客户端应用程序中使用 Axis 1.4 进行 SOAP 调用。我通过 HTTPS 调用服务。一些服务使用自签名证书,其他服务使用证书颁发机构颁发的证书。
我已使用此答案中的代码将自签名证书添加到我的信任库中。我的问题是信任库被用于所有调用——即使是对具有来自 CA 的有效证书的服务器的调用。
无论如何告诉 Axis 仅将信任库用于具有自签名证书的服务器?
它本质上与这里的问题相同(除了这是用于客户端证书身份验证)。
您需要创建自己的套接字工厂类并使用此属性将其传递给轴:
AxisProperties.setProperty("axis.socketSecureFactory",
"com.example.MySSLSocketFactory");
(见org.apache.axis.components.net.SecureSocketFactory
。)
由于您已经有一个 working SSLContext
,而不是将其设置为默认上下文,您需要从中创建一个javax.net.ssl.SSLSocketFactory
并使用它在 Apache Axis 套接字工厂中创建套接字。