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