2011-10-24 14 views
5

Tôi đã viết các máy khách Jersey RESTful đã sử dụng Dumb X509TrustManager và HostnameVerifier để tin cậy tất cả các chứng chỉ SSL trên hệ thống phòng thí nghiệm của chúng tôi để dễ dàng xử lý các chứng chỉ được tự ký.CXF RESTful Client - Làm thế nào để tin tưởng tất cả các chứng chỉ?

 ClientConfig config = new DefaultClientConfig(); 
     SSLContext context = null; 
     try 
     { 
      context = SSLContext.getInstance("SSL"); 
      context.init(null, 
        new TrustManager[] { new DumbX509TrustManager() }, 
        null); 
      config.getProperties() 
        .put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, 
          new HTTPSProperties(this.getHostnameVerifier(), 
            context)); 
      webClient = Client.create(config); 
     } 
     .... 

Có cách nào để tôi thực hiện điều gì đó tương tự bằng CXF không?

Trả lời

6

Đây là từ danh sách gửi thư của CXF. Lưu ý rằng tôi không cần phải thực hiện nó do cập nhật hệ thống khác, vì vậy đây là lý thuyết:

WebClient webClient = WebClient.create(this.serviceURL, 
    this.username, 
    this.password, 
    null); // Spring config file - we don't use this 

if (trustAllCerts) 
{ 
    HTTPConduit conduit = WebClient.getConfig(webClient) 
     .getHttpConduit(); 

    TLSClientParameters params = 
     conduit.getTlsClientParameters(); 

    if (params == null) 
    { 
     params = new TLSClientParameters(); 
     conduit.setTlsClientParameters(params); 
    } 

    params.setTrustManagers(new TrustManager[] { new 
     DumbX509TrustManager() }); 

    params.setDisableCNCheck(true); 
} 
+0

[Câu trả lời này] (http://stackoverflow.com/a/6755459/150992) chi tiết cách bạn có thể thiết lập TrustManager giả chấp nhận chứng chỉ một cách mù quáng. (tất nhiên, bạn có thể không muốn sử dụng một cái gì đó giống như nó trong sản xuất) – Eyal