1

我正在尝试在 python 环境中使用 EJBCA SOAP API 为创建的用户生成 p12 证书。文档通知我使用以下请求:pkcs12Req,它返回以 base 64 格式编码的 JAVA 密钥库数据。如何在不使用 JAVA sdk 的情况下使用该数据在 python 环境中创建 .p12 文件,或者这是不可能的?

http://www.massapi.com/source/manual/ejbca_4_0_3/modules/systemtests/src/org/ejbca/core/protocol/ws/CommonEjbcaWS.java.html#1901

// 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());
4

2 回答 2

1

pkcs12Req 命令返回 base64 编码的 PKCS#12 密钥库。如果你对它进行base64解码,你会得到一个可以用任何标准工具解析的二进制blob/文件,比如openssl。我不熟悉 PKCS#12 的本机 python 命令,但是使用 openssl 它是:

openssl pkcs12 -in ~/tmp/caadmin.p12

似乎您可以使用 pyOpenSSL 来解析它(我认为也是 base64 解码),如另一篇stackoverflow 帖子中所述。

于 2018-08-06T07:25:49.910 回答
0

我发现无法在 python 中使用 JAVA Keystore,所以我将流程更改为使用 pkcs10Request 并使用 openssl 创建 p12 证书

于 2018-06-11T14:07:45.310 回答