OpenSSL命令asn1parse的使用

介绍

asn1parse命令是一种用来诊断ASN.1结构的工具,也能用于从ASN1.1数据中提取数据。

用法

1
openssl  asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i][ -dump ] [dlimit number] [-oid filename] [-strparse offset] [-genstr string ] [-genconf file]

选项说明

  • -inform PEM|DER 输入内容的格式,一般为PEM(base64编码格式)和DER(是二进制格式)两种,默认为PEM。
  • -in filename:输入文件名,默认为标准输入。
  • -noout:不打印参数编码的版本信息。
  • -i:标记实体,输出缩进标记,将一个ASN1实体下的其他对象缩进显示。此选项非默认选项,加上此选项后,显示更易看懂。

其它说明见更多中的链接

输出

这执行
openssl asn1parse -i -in /etc/letsencrypt/live/fengcl.com/privkey.pem
的示例输出。
就是letsencrypt的证书中的私钥

1
2
3
4
5
6
0:d=0  hl=4 l=1215 cons: SEQUENCE          
4:d=1 hl=2 l= 1 prim: INTEGER :00
7:d=1 hl=2 l= 13 cons: SEQUENCE
9:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption
20:d=2 hl=2 l= 0 prim: NULL
22:d=1 hl=4 l=1193 prim: OCTET STRING [HEX DUMP]:308204A5...

格式解析

ASN.1结构输出格式说明:

1
0:d=0  hl=4 l=1215 cons: SEQUENCE

  • 0 表示节点在整个文件中的偏移长度
  • d=0 表示节点深度
  • hl=4 表示节点头字节长度
  • l=1215 表示节点数据字节长度
  • cons 表示该节点为结构节点,表示包含子节点或者子结构数据
  • prim 表示该节点为原始节点,包含数据

SEQUENCEOCTETSTRING等都是ASN.1中定义的数据类型,具体可以参考ASN.1格式说明。
最后一个节点OCTET STRING [HEX DUMP],就是加密后的私钥数据。

更多