如何在不使用 OpenSSL 的情况下使用私钥导出 base64 编码的 x.509 证书

Posted

技术标签:

【中文标题】如何在不使用 OpenSSL 的情况下使用私钥导出 base64 编码的 x.509 证书【英文标题】:How to export base64 encoded x.509 certificate with private key without using OpenSSL 【发布时间】:2018-09-05 23:18:46 【问题描述】:

我有一个带有 .cer 扩展名和私钥的根 CA 证书。 我必须将该证书导出为 .pem 扩展名,并使用 base64 编码格式的私钥不使用 OpenSSl。 我无法用 mmc 做到这一点。

是否有任何工具或脚本可用于将证书从 pfx 转换为 pem 格式在 windows 中不使用 openssl

请通过共享代码或任何脚本或命令等来帮助我... 谢谢...

【问题讨论】:

您确定要导出带有私钥的根 CA 证书吗? 是的,当然。使用 mmc 我尝试导出我的证书,当我选择是,导出私钥单选按钮然后在下一步中无法选择 Base-64 编码的 X.509(.cer) 选项 因为 Windows 本身不支持请求的格式。您可以从 mmc 导出到 PFX/PKCS#12,然后必须使用一些工具或 PowerShell 脚本将其转换为您请求的格式。 感谢您的评论。是否有任何工具可用于将 pfx 转换为 pem 格式而不在 windows 中使用 openssl。 【参考方案1】:

您可以使用窗口的certutil 工具将文件编码为 Base64。试试这个命令:

certutil -encode YOUR_PFX_FILE CONVERTED_FILE_NAME

这个命令也应该放置适当的证书头。

【讨论】:

我试过这个命令,但在 pem 文件的开头和结尾它包含 -----BEGIN CERTIFICATE----- 一些数据 -----END CERTIFICATE-----我认为现有文件中的私钥不存在。但我也想要带有私钥的 pem 文件 @Prakash 这就是 PEM 文件的样子。它将有页眉和页脚。它还包含私钥。 我试过用 openssl 命令 openssl pkcs12 -in input.pfx -out output.pem -nodes 这个命令 pem file contains -----BEGIN PRIVATE KEY----- data --- --END PRIVATE KEY----- 和 -----BEGIN CERTIFICATE----- 数据 -----END CERTIFICATE----- openssl 分别对私钥和证书进行编码。 certutil 将整个 PKCS12 编码为 pem 格式(密钥库),这意味着它将具有私钥。 certutil 不会更改文件的格式,它只会按原样进行编码。如果您想要单独使用它们还是想要整个密钥库,这取决于您的用例。 我的用例是我想要它们分开,因为我的第三方库读取 -----BEGIN RSA PRIVATE KEY----- 和 -----END RSA PRIVATE KEY- 之间的数据---- .那么我怎样才能将它们分开。

以上是关于如何在不使用 OpenSSL 的情况下使用私钥导出 base64 编码的 x.509 证书的主要内容,如果未能解决你的问题,请参考以下文章

如何使用私钥/公钥在不提供密码的情况下登录 ssh 服务器-imported-openssh-key

如何使用openssl生成RSA公钥和私钥对 / 蓝讯

LINUX使用OpenSSL进行签名

Java Keytools 证书转换成Openssl 的PEM 文件或keytools 导出私钥文件

如何使用openssl生成RSA公钥和私钥对

如何在不使用复制到 memory2 的情况下返回导出路径? [关闭]