用法:openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename]
[-noout] [-offset number] [-length number] [-i] [- structure filename]
[-strparse offset]
用途:一個診斷工具,可以對ASN1結(jié)構(gòu)的東東進(jìn)行分析。
ASN1是什么?一個用來描述對象的標(biāo)準(zhǔn)。要解釋的話,文章可以比解釋openssl結(jié)構(gòu)的文章更長。有興趣的話自己去網(wǎng)絡(luò)上找來看吧。
-inform DER|PEM|TXT
輸入的格式,DER是二進(jìn)制格式,PEM是base64編碼格式,TXT不用解釋了吧
-in filename
輸入文件的名稱,缺省為標(biāo)準(zhǔn)輸入。
-out filename
輸入文件的名稱,輸入一般都是DER數(shù)據(jù)。如果沒這個項(xiàng),就沒有東西輸入咯。該項(xiàng)一般都要和-strparse一起使用。
-noout
不要輸出任何東西(不明白有什么用)
-offset number
從文件的那里開始分析,看到offset就應(yīng)該知道是什么意思了吧。
-length number
一共分析輸入文件的長度的多少,缺省是一直分析到文件結(jié)束。
-i
根據(jù)輸出的數(shù)據(jù)自動縮進(jìn)。
- structure filename
當(dāng)你輸入的文件包含有附加的對象標(biāo)志符的時候,使用這個。
這種文件的格式在后面會介紹。
-strparse offset
從由offset指定的偏移量開始分析ASN1對象。當(dāng)你碰到一個嵌套的對象時,可以反復(fù)使用這個項(xiàng)來一直進(jìn)到里面的結(jié)構(gòu)捏出你需要的東東。
一般分析完之后輸入的東東如下:
openssl asn1parse -out temp.ans -i -inform pem < server.crt
0:d=0 hl=4 l= 881 cons: SEQUENCE
4:d=1 hl=4 l= 730 cons: SEQUENCE
... ....
172:d=3 hl=2 l= 13 prim: UTCTIME :000830074155Z
187:d=3 hl=2 l= 13 prim: UTCTIME :010830074155Z
202:d=2 hl=3 l= 136 cons: SEQUENCE
205:d=3 hl=2 l= 11 cons: SET
... ...
359:d=3 hl=3 l= 141 prim: BIT STRING
... ...
本例是一個自簽名的證書。每一行的開始是對象在文件里的偏移量。d=xx是結(jié)構(gòu)嵌套的深度。知道ASN1結(jié)構(gòu)的人應(yīng)該知道,每一個SET或者SEQUENCE都會讓嵌套深度增加1.
hl=xx表示當(dāng)前類型的header的長度。1=xx表示內(nèi)容的八進(jìn)制的長度。
-i可以讓輸出的東西容易懂一點(diǎn)。
如果沒有ASN.1的知識,可以省略看這一章。
本例中359行就是證書里的公共密鑰。可以用-strparse來看看
openssl asn1parse -out temp.ans -i -inform pem -strparse 359 < server.crt
0:d=0 hl=3 l= 137 cons: SEQUENCE
3:d=1 hl=3 l= 129 prim: INTEGER :C0D802B4C084B20569C619C0FDF
466EEB7980920A408D51DA22C20427AC32488665D931C41E3274912DE2F25C8CA9C97B75
415C01794B622DBEADD92DA068C140C3AD387BF5FDC9A8D2FCEE7F7F3E36B0194994FD67
07897C8969F16F6ECB3F03BF985E910817160FE5DCBF874B1C0DBD06A568E130DA7C9FE3
9FE7A7F421369
135:d=1 hl=2 l= 3 prim: INTEGER :010001
不要試圖去看temp.ans的內(nèi)容,是二進(jìn)制來的,看不懂的。
posted on 2009-11-27 17:33
零全零美 閱讀(915)
評論(0) 編輯 收藏 所屬分類:
安全相關(guān)