我已经从API导出了一个base 64编码的证书,现在需要将其转换为pkcs 12格式以上传到Azure。下面的PowerShell脚本可以完美地完成这项工作,但我在将其转换为OpenSSL时遇到了麻烦。
$base64value = Get-Content -Path $base64FilePath
$byteArray = [System.Convert]::FromBase64String($base64value)
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($byteArray, $certPw, [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
# Export the certificate as a PFX file
$bytesPfx = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx, $certPw)
[System.IO.File]::WriteAllBytes($pkcs12FilePath, $bytesPfx)
字符串
我已经尝试了以下两个OpenSSL命令...
openssl base64 -d -a -in [base64.pfx] -out [converted.pfx]
openssl enc -base64 -d -in [base64.pfx] -out [converted.pfx]
的数据
...但是当我尝试使用证书时,这两个都返回相同的错误:
34359836736:错误:0 D 07207 B:asn 1编码例程:ASN1_get_object:标头太长:crypto/asn1/asn1_lib.c:101:pkcs 12错误
任何与此转换的帮助将不胜感激。提前感谢!
2条答案
按热度按时间sq1bmfud1#
您必须使用
-A
**(大写)**参数,而不是-a
。根据OpenSSL的文档,他们的base64解码器默认限制为76个字符。因此,pkcs12二进制文件的预期输出实际上被截断到该限制。这就是为什么你得到
header too long
错误,由于损坏的文件生成。文档建议您可以使用
-A
选项来克服此限制。最后的命令是:
字符串
额外的好处是,如果你想把它进一步转换成PEM文件:
型
如果您只需要客户端证书,也可以包含
-clcerts
选项。qf9go6mv2#
你可以试试下面的
从base64 openssl二进制格式转换pfx
字符串
然后将其转换为pkcs12:
型