【问题标题】:how to disable CN checking for CXF 3.0.0+ jax-rs 2.0 client如何禁用 CXF 3.0.0+ jax-rs 2.0 客户端的 CN 检查
【发布时间】:2015-04-12 14:35:10
【问题描述】:

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

请帮忙!

【问题讨论】:

  • 您知道禁用主机名检查实际上与禁用任何类型的证书验证相同,因为现在攻击者可以使用由受信任的 CA 签名的任何证书,而不仅仅是与主机匹配的证书姓名?

标签: ssl certificate cxf jax-rs cruisecontrol.net


【解决方案1】:

你正在寻找这个代码sn-p;

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

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

【讨论】:

  • SAMPLE_PORT 应该是什么样子?我是新手,需要尝试一下以解决同样的问题
猜你喜欢
  • 2015-01-03
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多