我正在尝试通过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);
为了在新方法中建立新连接,我还要编写这些行... 有没有办法可以将它们放在类构造函数中,然后在该类中进行连接,而无需在连接之前编写它们。
谢谢
答案 0 :(得分:0)
看看我的blog article。我已经发布了详细的描述如何将您想要的证书添加到自定义密钥库并使用它初始化HttpClient。
希望这有帮助
编辑:我没有尝试过,但也许TrustStrategy interface可能会有所帮助。
您可以实现自己的TrustStrategy接口并使用appropriate constructor初始化SSLSocketFactory。您的策略可以返回true(在isTrusted方法中),但您应该出于安全原因进行一些检查,以确保证书是否可以被视为可信任(这取决于您的需要)
请查看我在SecureHttpClient类的博客文章中的第35行。用以下内容替换该行:
SSLSocketFactory sf = new SSLSocketFactory(myTrustStrategy);
如果这对你有用,请告诉我。
此致