从 X.509 证书中提取 PEM 公钥

Posted

技术标签:

【中文标题】从 X.509 证书中提取 PEM 公钥【英文标题】:Extract PEM Public Key from X.509 Certificate 【发布时间】:2015-05-16 22:34:30 【问题描述】:

我创建了一个我认为包含公钥 DER 文件的证书,但我现在需要 PEM 格式的公钥用于不同的平台。目的是使用相同的公钥。

我使用RSA Encryption in ios and Decrypt It Using php 创建它:

openssl req -x509 -out public_key.der -outform der -new -newkey rsa:1024 -keyout private_key.pem -days 3650

我有一个正在使用的现有公钥 (public_key.der),无法更改。但是我现在需要一个 PEM 版本的公钥

public_key.pem

如何以这种方式从 DER 转换为 PEM?

注意:如果我使用以下方法创建了我的密钥对,事情会很容易。我可以提取一个公钥 PEM 文件:

openssl genrsa -out rsa.pem 1024 
openssl rsa -in rsa.pem -pubout

以这种方式生成的公共 PEM 文件有效。 有没有可能我之前创建的(使用-x590 命令)与rsa 命令的输出完全不同?

【问题讨论】:

Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops? 【参考方案1】:

假设您已经使用命令创建了 DER 格式的证书

openssl req -x509 -out certificate.der -outform der -new -newkey rsa:1024 -keyout private_key.pem -days 3650

然后可以通过命令提取PEM格式的公钥

openssl x509 -inform der -in certificate.der -pubkey -noout > public_key.pem

-inform 定义证书格式(默认为 PEM),-noout 禁止输出,但请求的 -pubkey 除外。

与PEM格式的证书相同的操作:

openssl x509 -in certificate.pem -pubkey -noout > public_key.pem

【讨论】:

以上是关于从 X.509 证书中提取 PEM 公钥的主要内容,如果未能解决你的问题,请参考以下文章

从jks证书中提取公钥和私钥(jks证书转pem证书)

X.509:私钥/公钥

联盟链系列 - 用Openssl颁发X.509证书

(Erlang)以pem格式从证书中提取公钥

OpenSSL生成公钥私钥

如何以 .pem 格式保存证书中的公钥