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

Convert pfx formatted private key to pem format

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

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

种子 ID 兼容性

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

java.security.cert.X509Certificate

然后这个通过函数导出为PFX格式

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

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

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

能够解决这个问题。问题是,该文件不是纯 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

然后你就完成了