我需要实现到我的应用程序的 https 连接。首先,我上课了,它信任所有证书,但读到它效率低下。然后我决定使用 kystore 来保存来自 serer 的密钥。我尝试在命令 promtp 中以这种方式创建它:
keytool -genkey -alias myproject -keystore C:/myproject.keystore
-storepass myproject -storetype BKS -provider
org.bouncycastle.jce.provider.BouncyCastleProvider
但是当我想这样使用时:
protected static org.apache.http.conn.ssl.SSLSocketFactory createAdditionalCertsSSLSocketFactory() {
try {
final KeyStore ks = KeyStore.getInstance("BKS");
// the bks file we generated above
final InputStream in = context.getResources().openRawResource( R.raw.myproject);
try {
// don't forget to put the password used above in strings.xml/mystore_password
ks.load(in, context.getString( R.string.mystore_password ).toCharArray());
} finally {
in.close();
}
return new AdditionalKeyStoreSSLSocketFactory(ks);
} catch( Exception e ) {
throw new RuntimeException(e);
}
}
,我无法从 res/raw 目录访问我的密钥库,但我将它放在 res/raw 目录中。而且我的 R 文件也被删除了......我尝试使用 Portecle 接口实现它,但我遇到了同样的问题 - 无法从 res/raw 错误中访问密钥库,并且当我尝试构建/清理项目 R 文件时被删除。当我删除密钥库文件时,R 文件已恢复。请告诉我,我怎样才能以正确的方式创建密钥库并将其用于我的连接。