我正在尝试使用Python环境中的EJBCA SOAP API为创建的用户生成p12证书。文档通知我使用以下请求:pkcs12Req,它返回以base 64格式编码的JAVA密钥库数据。如何在不使用JAVA sdk的情况下使用该数据在python环境中创建.p12文件,或者这是不可能的?
// A new PK12 request now should return the same key and certificate
KeyStore ksenv2 = ejbcaraws.pkcs12Req(CA1_WSTESTUSER1, "foo456", null, "1024", AlgorithmConstants.KEYALGORITHM_RSA);
java.security.KeyStore ks2 = KeyStoreHelper.getKeyStore(ksenv2.getKeystoreData(), "PKCS12", "foo456");
assertNotNull(ks2);
en = ks2.aliases();
alias = (String) en.nextElement();
X509Certificate cert2 = (X509Certificate) ks2.getCertificate(alias);
assertEquals(cert2.getSubjectDN().toString(), getDN(CA1_WSTESTUSER1));
PrivateKey privK2 = (PrivateKey) ks2.getKey(alias, "foo456".toCharArray());
答案 0 :(得分:1)
pkcs12Req命令返回一个以base64编码的PKCS#12密钥库。如果对base64进行解码,则会得到一个二进制blob /文件,可以使用任何标准工具(例如openssl)进行解析。我不熟悉PKCS#12的本机python命令,但是使用openssl时,它是:
openssl pkcs12 -in ~/tmp/caadmin.p12
似乎您可以按照另一个stackoverflow post中的描述使用pyOpenSSL对其进行解析(我认为还可以使用base64对其进行解码)。
答案 1 :(得分:0)
我发现无法在python中使用JAVA Keystore,因此我将流程更改为使用pkcs10Request并使用openssl创建p12证书