2015-06-04 15 views
8

Khi tôi tạo ra cuống client webservice sử dụng Apache Axis, tôi vô hiệu hóa việc kiểm tra tin tưởng chứng chỉ máy chủ trong mã của tôi bằng cách sử dụng khai khách hàng bằng cách gọi phương pháp sau đâytương đương của org.apache.axis.components.net.SunFakeTrustSocketFactory cho wsimport

AxisProperties.setProperty("axis.socketSecureFactory", 
    "org.apache.axis.components.net.SunFakeTrustSocketFactory"); 

Làm cách nào để vô hiệu hóa kiểm tra ủy thác với các nhánh của khách hàng được tạo bằng cách chạy wsimport?

Tôi sử dụng tính năng này khi chạy một số mã thử nghiệm.

Trả lời

6

Tất cả những gì xảy ra trong lớp học đó là cung cấp một số không giả trust store manager, rằng trusts anything. Biết rằng, bạn có thể sử dụng this article và đặt thứ gì đó lại với nhau.

  1. Đầu tiên easy trust manager

    public class EasyTrustManager implements X509TrustManager { 
        public void checkClientTrusted(X509Certificate[] chain, String authType) { 
         //do nothing 
        } 
    
        public void checkServerTrusted(X509Certificate[] chain, String authType) { 
         //do nothing 
        } 
    
        public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
         return null; 
        } 
    } 
    
  2. Sau đó ăn quản lý tin tưởng của bạn để một thể hiện của SSLContext, giống như axis was doing:

    SSLContext sCtxt = SSLContext.getInstance("SSL"); 
    sCtxt.init(null, new TrustManager[]{new EasyTrustManager()}, new java.security.SecureRandom()); 
    
  3. Cài đặt bối cảnh tùy chỉnh, bằng cách gọi HttpsURLConnection#setDefaultSSLSocketFactory dựa trên thực tế là tất cả các cuộc gọi dịch vụ web của bạn đều dựa trên phiên bản cơ bản của HttpsURLConnection. Cuộc gọi này sẽ thiết lập bối cảnh, bằng cách SSLContext#getContext, cho tất cả https gọi

    HttpsURLConnection.setDefaultSSLSocketFactory(sCtxt.getSocketFactory()); 
    
+0

Đã phải sửa EasyTrustManager của bạn để làm cho nó biên dịch. – user93353

Các vấn đề liên quan