asn1parse命令是一种用来诊断ASN.1结构的工具,也能用于从ASN1.1数据中提取数据。
用法:
openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i] [-oid filename] [-strparse offset] [-genstr string ] [-genconf file]
选项:
-inform PEM|DER
输入数据的格式为DER还是PEM,默认为PEM格式。
-in filename
输入文件名,默认为标准输入。
-out filename
输出文件名,默认为标准输出,给定一个PEM文件,采用此选项可用生成一个DER编码的文件。
-noout
无输出打印。
-offset number
数据分析字节偏移量,分析数据时,不一定从头开始分析,可用指定偏移量,默认从头开始分析。
-length number
分析数据的长度,默认的长度为整个数据的长度;
-i
标记实体,加上此选项后,输出会有缩进,将一个ASN1实体下的其他对象缩进显示。此选项非默认选项,加上此选项后,显示更易看懂。
-dump
显示十六进制数据。非默认选项。
-dlimit number
与-dump不同,-dump显示所有的数据,而此选项只能显示由number指定数目的十六进制数据。
-oid file
指定外部的oid文件。
-strparse offset
此选项也用于从一个偏移量开始来分析数据,不过,与-offset不一样。-offset分析偏移量之后的所有数据,而-strparse只用于分析一段数据,并且这种数据必须是SET或者SEQUENCE,它只分析本SET或者SEQUENCE范围的数据。
使用示例:输入文件为一个证书的PEM格式文件,文件名为server.pem,各种命令如下:
openssl asn1parse c:\serverr.pem
openssl asn1parse –in c:\server.pem –inform pem
上面的输出内容如下:
0:d=0 hl=
4:d=1 hl=
8:d=2 hl=
11:d=2 hl=
13:d=3 hl=
24:d=3 hl=
26:d=2 hl=
28:d=3 hl=
30:d=4 hl=
32:d=5 hl=
37:d=5 hl=
41:d=3 hl=
43:d=4 hl=
45:d=5 hl=
50:d=5 hl=
62:d=3 hl=
64:d=4 hl=
………
以其中的一行进行说明:
13:d=3 hl=
13表示偏移量;d=3表示此项的深度;hl=2表示asn1头长度;l=9表示内容长度;prim:OBJECT表示ASN1类型;md5WithRSAEncryption表示oid。
示例如下:
openssl asn1parse –in c:\server.pem –out c:\server.cer
此命令除了显示上面内容外,并生成一个der编码的文件。
openssl asn1parse –in c:\server.pem –i
此命令显示上面的内容,但是有缩进。
openssl asn1parse –in c:\server.pem –i –offset 26
此命令从偏移量26开始分析,到结束。注意,26从前面命令的结果得到。
openssl asn1parse –in c:\server.pem –i –offset 13 –length 11
此命令从偏移量13进行分析,分析长度为11
openssl asn1parse –in c:\server.pem –i –dump
分析时,显示BIT STRING等的十六进制数据;
openssl asn1parse –in c:\server.pem –i –dlimit 10
分析时,显示BIT SRING的前10个十六进制数据。
openssl asn1parse –in c:\server.pem –i –strparse 11
此令分析一个SEQUENCE。
openssl asn1parse –in c:\server.pem –i –strparse 11 –offset 2 –length 11
根据偏移量和长度分析。