2016-08-24 76 views
0

我有一个很有可能是pfx格式的私钥(不是很秘密)。我需要将其转换为pem格式,才能在签名中使用它。将pfx格式的私钥转换为pem格式

关键在于一行。它没有单独的开始和结束行。这是一行,base64编码,2284个字母长(比我之前见过的普通x.509更长)。我与其他一些变量,以及包括了它:

种子 ID 兼容性

我能看到它是如何创建的。它首先创建一个

java.security.cert.X509Certificate

那么这是通过函数导出到一个PFX格式创建。

在函数内部,我看到提到的密钥库实例“PKCS12”。 也看到ByteArrayOutputStream。

任何想法如何我可以将这一个衬里base64编码私钥转换为pem格式?该格式应该被我用于签名的节点模块xmlCrypto所接受。目前xmlCrypto给出了关键以下警告:

Error: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag

回答

0

之所以能够解决这个问题。问题是,该文件不是纯粹的pfx格式。但它是以base64编码格式。为了在openssl工具的帮助下将其转换为pem格式,首先必须将该文件解码为其原始的.pfx格式。并且不要使用在线解码器。有了Linux,你可以像下面对其进行解码:

echo <the encoded pfx content> | base64 --decode > decoded-pfx-filename.pfx 

之后,你可以使用OpenSSL:

openssl pkcs12 -in decoded-pfx-filename.pfx -out cert-and-privkey-in-pem.pem -nodes 

然后就大功告成了