如何在Android设备上安装可信CA证书?我已经创建了自己的CA证书,现在我想在我的Android Froyo设备(HTC Desire Z)上安装它,以便设备信任我的证书。Android将CA证书存储在其Java密钥库中/system/etc/security/cacerts.bks。我将文件复制到我的计算机,使用portecle 1.5添加了我的证书并将其推回到设备。现在,Android似乎没有自动重新加载文件。我在几篇博客文章中看到我需要重启设备。这样做会导致文件再次被原始文件覆盖。我的下一个尝试是通过复制它并使用设置菜单中的相应选项从SD卡安装证书。设备告诉我证书已经安装,但显然它不信任证书。此外,当我尝试将密钥库复制到我的计算机时,我仍然可以找到原始库存cacerts.bks。那么,在Android 2.2设备上安装我自己的根CA证书作为可信证书的正确方法是什么?有没有办法以编程方式进行?
3 回答
![?](http://img1.sycdn.imooc.com/545850200001359c02200220-100-100.jpg)
杨__羊羊
TA贡献1943条经验 获得超7个赞
如果您需要HTTPS连接证书,则可以将.bks文件作为原始资源添加到应用程序并扩展DefaultHttpConnection,以便将证书用于HTTPS连接。
public class MyHttpClient extends DefaultHttpClient { private Resources _resources; public MyHttpClient(Resources resources) { _resources = resources; } @Override protected ClientConnectionManager createClientConnectionManager() { SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("http", PlainSocketFactory .getSocketFactory(), 80)); if (_resources != null) { registry.register(new Scheme("https", newSslSocketFactory(), 443)); } else { registry.register(new Scheme("https", SSLSocketFactory .getSocketFactory(), 443)); } return new SingleClientConnManager(getParams(), registry); } private SSLSocketFactory newSslSocketFactory() { try { KeyStore trusted = KeyStore.getInstance("BKS"); InputStream in = _resources.openRawResource(R.raw.mystore); try { trusted.load(in, "pwd".toCharArray()); } finally { in.close(); } return new SSLSocketFactory(trusted); } catch (Exception e) { throw new AssertionError(e); } }}
- 3 回答
- 0 关注
- 1740 浏览
添加回答
举报
0/150
提交
取消