ssl - 如何禁用 CXF 3.0.0+ jax-rs 2.0 客户端的 CN 检查

标签 ssl certificate cxf jax-rs cruisecontrol.net

我不知道如何通过 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”为真。

请帮忙!

最佳答案

您正在寻找这段代码;

       HTTPConduit httpConduit=(HTTPConduit)ClientProxy.getClient(SAMPLE_PORT).getConduit();
       TLSClientParameters tlsCP = new TLSClientParameters();
       tlsCP.setDisableCNCheck(true);
       httpConduit.setTlsClientParameters(tlsCP);

始终在测试环境中使用此代码。!

关于ssl - 如何禁用 CXF 3.0.0+ jax-rs 2.0 客户端的 CN 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29590596/

相关文章:

node.js - 无法让 SSL 与 NodeJS 一起工作

java - 启用 SSL 的 Tomcat 上的非 SSL Web 服务

android - Android JSON 中的 SessionExpiredException 错误

wcf - 如何将证书部署到 Azure 中的受信任人员存储?

windows - 如何在 Windows XP 上获取 x.509 证书

java - 403 禁止将 wss4jOutInterceptor 与 Camel 和 cxf 一起使用

security - 数字证书 : signing vs verifying?

ios - 我可以在任何 Apple 计算机上安装我作为开发人员签名的 Mac OS X 应用程序吗?

http - 从 Apache CXF POJO 服务获取 HTTP header

java - Apache CXF |对 Web 服务调用的多个响应