无法将Pyjks中的PEM编码的私钥加载到PKey对象中

时间:2019-04-17 11:34:01

标签: pyopenssl p12 pyjks

我正在将Pyjks PrivateKeyEntry对象加载到PEM中,然后尝试将经过pem编码的字符串加载到Pkey对象中。您可能已经猜到了,我正在尝试将PrivateKeyEntry及其证书链导出到文件中。我们有一个可以将certs和p12容器导入到Java密钥库中的UI,并且我也正在尝试使其可下载。

pkey_pem = pkey_as_pem(keystore_entry)
load_privatekey(crypto.FILETYPE_PEM, pkey_pem)

但是,我从OpenSSL.crypto库中得到的错误至少可以说是毫无用处的:

OpenSSL.crypto.Error: [('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error'), ('rsa routines', 'old_rsa_priv_decode', 'RSA lib'), ('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error'), ('PEM routines', 'PEM_read_bio_PrivateKey', 'ASN1 lib')]

Pyjks还以相同的方式显示了这一过程:https://github.com/kurtbrose/pyjks/blob/master/tools/readks.py 这样我就可以导出证书了。

编辑:也尝试使用load_privatekey(crypto.FILETYPE_ASN1, pkey_pem._pkey),导致类似的神秘错误消息:

{Error}[('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_template_noexp_d2i', 'nested asn1 error'), ('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error'), ('rsa routines', 'old_rsa_priv_decode', 'RSA lib'), ('asn1 encoding routines', 'asn1_check_tlen', 'wrong tag'), ('asn1 encoding routines', 'asn1_item_embed_d2i', 'nested asn1 error')]

1 个答案:

答案 0 :(得分:0)

从我自己的代码中发现了一个错误(实际上是听上去更好),该错误实际上在导入到jks的过程中弄乱了pkey,这就是为什么它在OpenSSL中失败了。