我对密钥库有疑问。
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模拟器密钥库并将证书放入密钥库吗?