是否可以通过openssl只获取十六进制格式的公钥?我已经使用了命令:
openssl x509 -in a.pem -text -noout
只打印证书,其中公钥以十六进制格式提供,但我无法解析。这个命令例如:
openssl x509 -in a.pem -pubkey -noout
以下列格式返回公钥:
-----BEGIN PUBLIC KEY-----
#######
####===
-----END PUBLIC KEY----
有更好的方法吗?我希望以十六进制格式输出。
答案 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
转换certificate from DER to PEM first:
openssl x509 -inform der -in certificate.cer -out certificate.pem
然后再试一次