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

时间:2017-03-11 12:22:03

标签: openssl cryptography x509

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

openssl x509 -in a.pem -text -noout

只打印证书,其中公钥以十六进制格式提供,但我无法解析。这个命令例如:

openssl x509 -in a.pem -pubkey -noout

以下列格式返回公钥:

-----BEGIN PUBLIC KEY-----
#######
####===
-----END PUBLIC KEY----

有更好的方法吗?我希望以十六进制格式输出。

1 个答案:

答案 0 :(得分:1)

由于(讨论后)它是一个已经采用Base64(Armored ASCII)格式的自签名密钥,因此像tomeko.net这样的工具足以用十六进制编码。

原始答案:

this article获取可信证书:

  

解析公共密钥形成X.509证书并将其表示为十六进制数字变得简单易行。

openssl x509 -modulus -noout < pub.cer | sed s/Modulus=/0x/
  

只需将pub.cer替换为您要解析的证书文件

这使用modulus option

结果应该是这样的:

0xB1E057678343....

注意:以上内容适用于X.509v3文件,其中包含前缀为“ - BEGIN ...”行(即实际PEM文件)的ASCII(Base64)装甲数据。

如果您收到以下错误,则表示您正在尝试查看DER编码的证书:

unable to load certificate
PEM routines:PEM_read_bio:no start line:pem_lib.c:
Expecting: TRUSTED CERTIFICATE

对于文件,请注意the public key in DER format (which is a way of expressing X.509 objects as a sequence of bytes) includes more than just the modulus, but also the exponent (usually short) and the algorithm identifier

转换certificate from DER to PEM first

openssl x509 -inform der -in certificate.cer -out certificate.pem

然后再试一次