将pfx格式的私钥转换为pem格式

时间:2016-08-24 10:39:04

标签: java node.js cryptography digital-signature

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

关键是一行。它没有单独的开始和结束行。它在一行中,base64编码,2284个字母长(比我之前见过的常规x.509长)。我还得到了一些其他变量,包括:

种子 ID 兼容性

我能够看到它是如何创建的。它是通过首先创建

创建的
  

java.security.cert.X509Certificate

然后通过函数将其导出为PFX格式。

在该函数中,我看到了Keystore实例" PKCS12"提及。 也可以看到ByteArrayOutputStream。

知道如何将这个有衬里的base64编码私钥转换为pem格式吗?该格式应该被节点模块xmlCrypto 接受,我将其用于签名。目前,xmlCrypto使用密钥提供以下警告:

  

错误:错误:0D0680A8:asn1编码例程:ASN1_CHECK_TLEN:标记错误

1 个答案:

答案 0 :(得分: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

然后你就完成了