Openssl 如何从X.509证书获取十六进制格式的公钥

Openssl 如何从X.509证书获取十六进制格式的公钥,openssl,cryptography,x509,Openssl,Cryptography,X509,是否可以通过openssl仅获取十六进制格式的公钥?我使用了以下命令: openssl x509 -in a.pem -text -noout 这只是打印证书,其中公钥是十六进制格式的,但我无法解析它。例如,此命令: openssl x509 -in a.pem -pubkey -noout 以以下格式返回公钥: -----BEGIN PUBLIC KEY----- ####### ####=== -----END PUBLIC KEY---- 有更好的方法吗?我希望输出为十六进制格式。因

是否可以通过openssl仅获取十六进制格式的公钥?我使用了以下命令:

openssl x509 -in a.pem -text -noout
这只是打印证书,其中公钥是十六进制格式的,但我无法解析它。例如,此命令:

openssl x509 -in a.pem -pubkey -noout
以以下格式返回公钥:

-----BEGIN PUBLIC KEY-----
#######
####===
-----END PUBLIC KEY----
有更好的方法吗?我希望输出为十六进制格式。

因为(经过讨论)它是一个自签名密钥,已经是Base64(铠装ASCII)格式,像这样的工具足以将其编码为十六进制


原始答复:

来自,对于受信任的证书:

unable to load certificate
PEM routines:PEM_read_bio:no start line:pem_lib.c:
Expecting: TRUSTED CERTIFICATE
解析X.509证书中的公钥并将其表示为十六进制数变得简单而容易


注:上述内容适用于X.509v3文件,该文件包含ASCII(Base64)铠装数据,前缀为“-–BEGIN…”行(即实际的PEM文件)

如果出现以下错误,则表示您正试图查看DER编码的证书:

unable to load certificate
PEM routines:PEM_read_bio:no start line:pem_lib.c:
Expecting: TRUSTED CERTIFICATE
对于der文件,还要注意

转换为:


然后重试

谢谢您的回复。但是获取错误:
无法加载证书49367:error:0906D06C:PEM例程:PEM_read_bio:no start line:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-64.30.2/src/crypto/PEM/PEM_lib.c:648:使用公钥尝试时应为可信证书
,尝试时为算法类型错误带有证书。@GowthamG是您的私人pem证书,是一个实际的X.509v3文件,其中包含ASCII(Base64)铠装数据,前缀为“-–BEGIN”"是的,它是一个
X509v3
文件,它有一些组件,比如
X509v3扩展:X509v3基本约束
,它是一个自签名证书。仅供参考,它以
----BEGIN-certificate---
开始,以
----END-certificate---
结束。没关系,原始证书仅为pem格式。Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎是离题的,因为它与编程或开发无关。请参阅帮助中心。也许或会是一个更好的提问地方。另请参阅
unable to load certificate
PEM routines:PEM_read_bio:no start line:pem_lib.c:
Expecting: TRUSTED CERTIFICATE
openssl x509 -inform der -in certificate.cer -out certificate.pem