将证书导入Android上的密钥库

时间:2016-10-10 08:55:06

标签: android ssl keystore

我对密钥库有疑问。

android在密钥库中有构建吗?

如果是,密钥库在哪里?

我可以将证书导入密钥库吗?

如果是,我该如何手动和以编程方式进行?

请帮助,我已经在SSLHandShakeException上挣扎了一个星期。

我已经使用keytool生成了一个新的keystore.bks并将我的证书插入其中但我不知道如何将它用于我的Android应用程序。

我也尝试过在网上找到的代码。

在MyHttpsClient.java中

public class MyHttpsClient extends DefaultHttpClient{

final Context context;

public MyHttpsClient(Context context) {
    System.out.println("context client http");
    this.context = context;
}

@Override
protected ClientConnectionManager createClientConnectionManager(){
    SchemeRegistry registry = new SchemeRegistry();
    System.out.println("schema");
    registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    registry.register(new Scheme("https", newSslSocketFactory(), 8080));
    return new SingleClientConnManager(getParams(), registry);
}

private SSLSocketFactory newSslSocketFactory(){
    try{
        KeyStore trusted = KeyStore.getInstance("BKS");
        System.out.println("context client getInstance..");
        InputStream in = context.getResources().openRawResource(R.raw.server);
        System.out.println("context client input" + in);
        try{
        System.out.println("try");
            trusted.load(in, "changeit".toCharArray());
        }finally{
            in.close();
        }
        System.out.println("finally");
        SSLSocketFactory sf = new SSLSocketFactory(trusted);
        sf.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
        return sf;
    }catch(Exception e){
        throw new AssertionError(e);
    }
}
}

在我的Main.java

DefaultHttpClient client = new MyHttpsClient(getApplicationContext());

我在Main.java的onCreate()中有上面的代码,但我不知道它为什么不进入MyHttpsClient.java中的@Override函数

我可以阅读原始的android模拟器密钥库并将证书放入密钥库吗?

0 个答案:

没有答案