我需要实现与我的应用程序的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 derictory到达密钥库,当我尝试构建/清理项目时R文件已删除。当我删除密钥库文件时,R文件被恢复。 请告诉我,如何以正确的方式创建密钥库并将其用于我的连接。