如何在Android上的Java中接受自签名证书?
一个代码示例将是完美的。
我在Internet上到处都是,虽然有人声称找到了该解决方案,但它要么不起作用,要么没有示例代码来对其进行备份。
我在exchangeIt中具有此功能,该功能可通过WebDav连接到Microsoft Exchange。这是一些创建HttpClient的代码,该HttpClient将通过SSL连接到自签名证书:
SchemeRegistry schemeRegistry = new SchemeRegistry(); // http scheme schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); // https scheme schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 443)); HttpParams params = new BasicHttpParams(); params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 30); params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(30)); params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
EasySSLSocketFactory在这里,EasyX509TrustManager在这里。
对于exchangeIt的代码是开源的,并在托管googlecode上这里,如果您有任何问题。我不再积极从事此工作,但是代码应该可以工作。
请注意,自Android 2.2以来,此过程有所更改,因此请选中此复选框以使上面的代码正常工作。