openssl-asn1parse
名稱
openssl-asn1parse - ASN.1 分析指令
語法
openssl asn1parse [-help] [-inform DER|PEM|B64] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i] [-oid filename] [-dump] [-dlimit num] [-strparse offset] [-genstr string] [-genconf file] [-strictpem] [-item name]
說明
此指令是一個診斷工具程式,可以分析 ASN.1 結構。它也可以用來從 ASN.1 格式化的資料中萃取資料。
選項
- -help
-
列印使用訊息。
- -inform DER|PEM|B64
-
輸入格式;預設為 PEM。有關詳細資料,請參閱 openssl-format-options(1)。
- -in filename
-
輸入檔案,預設為標準輸入。
- -out filename
-
輸出檔案,用來放置 DER 編碼資料。如果沒有此選項,則不會輸出任何資料。這在與 -strparse 選項搭配使用時最為有用。
- -noout
-
不要輸出輸入檔案的已分析版本。
- -offset number
-
開始分析的起始偏移量,預設為檔案開頭。
- -length number
-
要分析的位元組數,預設為到檔案結尾。
- -i
-
根據結構的「深度」縮排輸出。
- -oid filename
-
包含其他物件識別碼 (OID) 的檔案。此檔案的格式說明如下方的附註部分。
- -dump
-
以十六進位格式傾印未知資料。
- -dlimit num
-
與 -dump 類似,但只輸出前 num 個位元組。
- -strparse offset
-
從 offset 開始分析 ASN.1 物件的內容八位元組。此選項可多次使用,以「深入」嵌套結構。
- -genstr string, -genconf file
-
使用 ASN1_generate_nconf(3) 格式,根據 string、file 或兩者產生編碼資料。如果只存在 file,則會使用名稱 asn1 從預設區段取得字串。編碼資料會透過 ASN1 分析器傳遞,並列印出來,就像它來自檔案一樣,因此可以檢查內容,並使用 -out 選項寫入檔案。
- -strictpem
-
如果使用此選項,則會忽略 -inform。沒有此選項,PEM 格式輸入檔案中的任何資料都將被視為以 base64 編碼,並進行處理,無論它是否有正常的 PEM BEGIN 和 END 標記。此選項將忽略 PEM 檔案中 BEGIN 標記開始前的任何資料,或 END 標記後的任何資料。
- -item 名稱
-
嘗試將資料解碼並列印為 ASN1_ITEM 名稱。如果已知類型,這可以用於列印出任何受支援 ASN.1 結構的欄位。
輸出
輸出通常會包含類似這樣的行
0:d=0 hl=4 l= 681 cons: SEQUENCE
.....
229:d=3 hl=3 l= 141 prim: BIT STRING
373:d=2 hl=3 l= 162 cons: cont [ 3 ]
376:d=3 hl=3 l= 159 cons: SEQUENCE
379:d=4 hl=2 l= 29 cons: SEQUENCE
381:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Identifier
386:d=5 hl=2 l= 22 prim: OCTET STRING
410:d=4 hl=2 l= 112 cons: SEQUENCE
412:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Authority Key Identifier
417:d=5 hl=2 l= 105 prim: OCTET STRING
524:d=4 hl=2 l= 12 cons: SEQUENCE
.....
此範例是自簽證書的一部分。每行都以十進位偏移量開頭。d=XX
指定目前的深度。深度會在任何 SET 或 SEQUENCE 的範圍內增加。hl=XX
提供目前類型的標頭長度(標籤和長度八位元組)。l=XX
提供內容八位元組的長度。
-i 選項可用於使輸出更具可讀性。
需要具備一些 ASN.1 結構的知識才能解譯輸出。
在此範例中,偏移量 229 的 BIT STRING 是證書公開金鑰。此內容八位元組將包含公開金鑰資訊。這可以使用選項 -strparse 229
檢查,以產生
0:d=0 hl=3 l= 137 cons: SEQUENCE
3:d=1 hl=3 l= 129 prim: INTEGER :E5D21E1F5C8D208EA7A2166C7FAF9F6BDF2059669C60876DDB70840F1A5AAFA59699FE471F379F1DD6A487E7D5409AB6A88D4A9746E24B91D8CF55DB3521015460C8EDE44EE8A4189F7A7BE77D6CD3A9AF2696F486855CF58BF0EDF2B4068058C7A947F52548DDF7E15E96B385F86422BEA9064A3EE9E1158A56E4A6F47E5897
135:d=1 hl=2 l= 3 prim: INTEGER :010001
備註
如果 OID 不是 OpenSSL 內部表格的一部分,它將以數字形式表示(例如 1.2.3.4)。傳遞給 -oid 選項的檔案允許包含其他 OID。每行包含三欄,第一欄是數字格式的 OID,後面應接空白。第二欄是「簡短名稱」,是一個單字,後面接空白。最後一欄是該行的其餘部分,也就是「長名稱」。範例
1.2.3.4 shortName A long name
對於任何具有相關簡短名稱和長名稱的 OID,此命令將顯示長名稱。
範例
剖析檔案
openssl asn1parse -in file.pem
剖析 DER 檔案
openssl asn1parse -inform DER -in file.der
產生一個簡單的 UTF8String
openssl asn1parse -genstr 'UTF8:Hello World'
產生並寫出一個 UTF8String,不要列印剖析後的輸出
openssl asn1parse -genstr 'UTF8:Hello World' -noout -out utf8.der
使用設定檔產生
openssl asn1parse -genconf asn1.cnf -noout -out asn1.der
範例設定檔
asn1=SEQUENCE:seq_sect
[seq_sect]
field1=BOOL:TRUE
field2=EXP:0, UTF8:some random string
錯誤
應有選項來變更輸出行的格式。某些 ASN.1 類型的輸出處理不當(如果有的話)。
另請參閱
openssl(1), ASN1_generate_nconf(3)
版權
版權所有 2000-2023 The OpenSSL Project Authors。保留所有權利。
授權於 Apache 授權 2.0(「授權」)。您不得使用此檔案,除非符合授權。您可以在原始程式碼散佈中的 LICENSE 檔案中取得副本,或在 https://www.openssl.org/source/license.html 取得。