2011-01-20 68 views
1

我想通過https在android中與OCS服務器建立安全連接。android:如何接受CA證書

我發現EasySSLFactory和EasyX509TrustManager類使android信任證書,但我不知道如何初始化一次EasySSLFactory和EasyX509TrustManager對象。

我有下面的代碼,以接受證書,並作出單一的連接:

SchemeRegistry schemeRegistry = new SchemeRegistry(); 

    schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 
      443)); 

    HttpParams params = new BasicHttpParams(); 
    params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 3); 
    params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, 
      new ConnPerRouteBean(1)); 
    params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false); 
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
    HttpProtocolParams.setContentCharset(params, "utf8"); 

    int timeoutConnection = 1000; 
    HttpConnectionParams.setConnectionTimeout(params, timeoutConnection); 

    int timeoutSocket = 1000; 
    HttpConnectionParams.setSoTimeout(params, timeoutSocket); 

    clientConnectionManager = new ThreadSafeClientConnManager(params, 
      schemeRegistry); 

    HttpClient client = new DefaultHttpClient(clientConnectionManager, 
      params); 

爲了使在一個新的方法新的連接,我要做寫那些線條太... 有沒有辦法,我可以把他們在類的構造函數,然後做那類連接,無需編寫連接前..

謝謝

回答

0

看看我blog article的方式。我已經發布了一個詳細描述,您可以如何將您所需的證書添加到自定義密鑰庫並使用它初始化HttpClient。

希望這有助於

編輯:我還沒有嘗試過,但也許TrustStrategy interface可能會有幫助。

您可以實現自己的TrustStrategy接口並使用appropriate constructor初始化SSLSocketFactory。您的策略可以返回true(在isTrusted方法中),但是您應該出於安全原因進行一些檢查以確保證書是否可以被視爲可信(這取決於您的需求)

看35行在我的SecureHttpClient類的博客文章中。用這樣的東西替換線:

SSLSocketFactory sf = new SSLSocketFactory(myTrustStrategy); 

請讓我知道這是否適用於你。

Regards

+0

嗨薩克斯,謝謝你的回覆。它幫助我以某種方式,但問題是,我的應用程序是一個即時通訊客戶端,它必須連接到大量的ocs服務器,我不能收集所有服務器的所有可能的證書:(你有另一種解決方案嗎?謝謝非常多! – Cata 2011-01-21 06:31:56