Android 4.1.2:未找到KeyStore BKS实现

时间:2015-08-01 11:07:13

标签: java android ssl

我在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的问题?

0 个答案:

没有答案