android - CertificateFactory 不从 InputStream 生成证书

标签 android ssl x509certificate bouncycastle

我正在尝试将自签名证书导入 Keystore。我将证书放在 Assets 文件夹中并尝试读取 CertificateFactory 中的输入流。

但 CertificateFactory 对象为空。它无法读取输入流。 Inputstream 具有值(value),我可以检查一下。请在此处查看我的代码:

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 具有空值。我正在尝试在我的 keystore 中使用它。

        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);

但在这个问题中可能会找到解决方案 How to Load RSA Private Key From File

关于android - CertificateFactory 不从 InputStream 生成证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29234245/

相关文章:

android - 更新android studio 3.3.2后无法找到请求的目标的有效证书路径

azure - 由于权限问题,无法通过 Azure 门户将应用服务证书 (ASC) 导入到 Azure Web 应用

c# - 我如何在 bouncyCaSTLe 中执行此操作(获取已安装的证书)?

ssl - 如何使用 OpenSSL 生成自签名 SSL 证书?

Android:Eclipse 自动完成功能在 xml 文件中不起作用

android - jPlayer 为 android chrome 预加载音频

android - 使用 broadcastReceiver 检测 android 中的来电和去电

ubuntu - Jenkins 在 'git pull' 上失败

c# - 运行局域网 WCF 服务

asp.net - 我可以在 ASP.NET 中使用多客户端证书吗?