如何在Android设备上安装可信CA证书?

如何在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证书作为可信证书的正确方法是什么?有没有办法以编程方式进行?


呼唤远方
浏览 1741回答 3
3回答

杨__羊羊

如果您需要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);         }     }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android