1

我正在尝试通过 android 中的 https 与 OCS 服务器建立安全连接。

我找到了 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);

为了在新方法中建立新连接,我也必须编写这些行......有没有一种方法可以将它们放在类构造函数中,然后在该类中进行连接,而无需在连接之前编写它。 .

谢谢

4

1 回答 1

0

看我的博客文章。我已经发布了详细说明如何将所需的证书添加到自定义密钥库并使用它初始化 HttpClient。

希望这可以帮助

编辑:我还没有尝试过,但也许TrustStrategy 界面可能会有所帮助。

您可以实现自己的 TrustStrategy 接口并使用适当的构造函数初始化 SSLSocketFactory 。您的策略可以只返回 true(在 isTrusted 方法中),但出于安全原因,您应该进行一些检查以确保证书是否可以被视为可信(这取决于您的需要)

查看我的 SecureHttpClient 类博客文章中的第 35 行。用以下内容替换该行:

SSLSocketFactory sf = new SSLSocketFactory(myTrustStrategy);

请让我知道这是否适合您。

问候

于 2011-01-20T12:44:50.740 回答