为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼唤远方 2019-08-09 17:23:00
如何在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 回答

?
杨__羊羊

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);
        }
    }}


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 1740 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信