在调用Soap Web服务时出现以下异常;
https URL主机名与客户端信任库中服务器证书上的公用名(CN)不匹配。确保服务器证书正确,或者要禁用此检查(不建议用于生产),请将CXF客户端TLS配置属性“ disableCNCheck”设置为true。
这是因为soap终结点URL具有IP地址而不是SSL证书中的域名。在我的其他Java应用程序中,我通常使用以下代码解决此问题;
HostnameVerifier {
@Override
public boolean verify(String hostName,
SSLSession session) {
return hostName.equals("serverIP");
}
但是对于这种情况,我使用Netbeans中的 WSIMPORT 工具创建了客户端,但是我不知道如何注入主机名验证程序代码。我曾尝试使用sun内部API(尽管不推荐),例如((BindingProvider) port).getRequestContext().put(com.sun.xml.internal.ws.transport.https.client.hostname.verifier, new HostNameVerifierClass());
,但这也不起作用。
我该如何解决?