我不知道如何在CXF 3.0.4 JAX-RS 2.0客户端中编程地禁用CN检查。我的代码如下:
System.setProperty("jsse.enableSNIExtension", "false");
HttpsURLConnection.setDefaultHostnameVerifier(
new HostnameVerifier(){
public boolean verify(String hostname,
SSLSession sslSession) {
return true;
}
});
Client client = ClientBuilderImpl.newClient();
String urlHost = "https://" + centralNode;
WebTarget target = client.target(urlHost).path(BASE_SERVICE_URL);
String encodedpw = Base64.encodeBase64String(passwd.getBytes());
String body = "{\"uid\" : \"" + uid + "\",\"password\": \"" + encodedpw + "\"}";
Response res = target.request(MediaType.APPLICATION_JSON).post(Entity.entity(body, MediaType.APPLICATION_JSON));
如您所见,我已经尝试覆盖默认的主机名验证器,并将jsse.enableSNIExtension设置为false。但这些都没有起作用,我仍然收到以下异常:
“https URL主机名与客户端信任库中服务器证书上的公共名称(CN)不匹配。请确保服务器证书正确,或者将CXF客户端TLS配置属性“disableCNCheck”设置为true以禁用此检查(不建议用于生产环境)。请帮助!”