2011-01-20 100 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