我是否能够使用 Android 或 BouncyCastle 库从 CA 签名的 X509 客户端证书中提取证书链信息?
我有一个 Android 客户端,它从受信任的服务器接收 CA 签名的 X509 证书。我想将签名的客户端证书和我的私钥保存到 PKCS12 (.p12) 文件中。我目前通过创建一个KeyStore
对象并添加证书和私钥来做到这一点。当我PrivateKey
使用该KeyStore.setKeyEntry()
方法添加客户端时,aCertificate[] chain
是最后一个参数,目前仅包含客户端证书。这是否会阻止我的证书可验证,因为我没有 CA 证书Certificate[] chain
?如果是,是否可以使用从签名中提取的信息填充证书链X509Certificate
?
大多数示例似乎从 PEM 文件、BKS 信任库加载 CA 链,或者已经可以访问证书列表。
这是我所拥有的:
X509Certificate cert; // signed client cert
PrivateKey pkey; // client private key
String password;
KeyStore store;
store = KeyStore.getInstance("PKCS12", "BC");
store.load(null, null);
// adding the signed cert
store.setCertificateEntry("Client certificate", cert);
// creating the cert chain
X509Certificate[] chain = new X509Certificate[1];
chain[0] = cert;
// add rest of the certs in the chain here
// adding the private key
store.setKeyEntry("Client private key", pkey, password.toCharArray(), chain);
FileOutputStream fos;
fos = openFileOutput("clientCredentials.p12", Context.MODE_PRIVATE);
store.store(fos, password.toCharArray());
fos.flush();
fos.close();
提前致谢!