Android CertificateFactory未从InputStream生成证书

Android CertificateFactory未从InputStream生成证书,android,ssl,x509certificate,bouncycastle,Android,Ssl,X509certificate,Bouncycastle,我正在尝试将自签名证书导入密钥库。我将证书放在资产文件夹中,并尝试读取CertificateFactory中的inputstream 但CertificateFactory对象为null。它无法读取inputstream。Inputstream有值,我可以检查。请在此处查看我的代码: CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC"); AssetManager assetManager =

我正在尝试将自签名证书导入密钥库。我将证书放在资产文件夹中,并尝试读取CertificateFactory中的inputstream

但CertificateFactory对象为null。它无法读取inputstream。Inputstream有值,我可以检查。请在此处查看我的代码:

CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");
        AssetManager assetManager = getAssets();
        InputStream caInput = assetManager.open("somecert.pem");
        X509Certificate caCertificate = (X509Certificate)cf.generateCertificate(caInput);
 //  Certificate ca = cf.generateCertificate(caInput);  //Also did this.
caCertificate具有空值。我正试图在我的密钥库中使用它

        String keyStoreType = KeyStore.getDefaultType();
        keyStore = KeyStore.getInstance(keyStoreType);
        keyStore.load(null, null);
        keyStore.setCertificateEntry("ca", caCertificate);

当我需要上传证书crt时,使用此代码此代码可以为您服务,我认为它是相同的:

// Loading the certificate in asserts
CertificateFactory cf = CertificateFactory.getInstance("X.509");
AssetManager assManager = context.getAssets();
caInput = assManager.open("certif.crt");
Certificate ca = cf.generateCertificate(caInput);
// Create a KeyStore containing different CAs
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);

// Create a TrustManager to store certificates
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);

// Creates a context for use ssl certificate
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
但在这个问题上可能会找到解决办法