我在Android 4.1.2上遇到BouncyCastle-Format问题。
在我的应用程序中,我使用SSL-Pinning来保护我的客户免受MITM-Attack的攻击。公共ssl证书存储在原始资源目录中。一切正常,但在Android 4.1.2上,它会通过初始化KeyStore而崩溃。
目前受影响的设备有:Samsung GT18190 / GT18190N;索尼ST26I; LG P880 - 全部采用Android 4.1.2
这是我创建SSLSocketFactory的代码:
import android.content.Context;
import java.io.InputStream;
import java.security.KeyStore;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
public class SSLSocket {
public static javax.net.ssl.SSLSocketFactory newSslSocketFactory(Context ctx) {
char[] KEYSTORE_PASSWORD = "MYKEYSTOREPASSWORD".toCharArray();
try {
KeyStore trusted = KeyStore.getInstance("BKS");
InputStream in = ctx.getResources().openRawResource(R.raw.ssl);
try {
trusted.load(in, KEYSTORE_PASSWORD);
} finally {
in.close();
}
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(trusted);
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
return context.getSocketFactory();
} catch (Exception e) {
throw new AssertionError(e);
}
}
}
抛出以下异常:
java.lang.AssertionError:java.security.KeyStoreException:java.security.NoSuchAlgorithmException:未找到KeyStore BKS实现
有没有人想解决Android 4.1.2的问题?