X.509 數字證書結構和例項

zhoujianhei發表於2008-12-24

一、 X.509數字證書的編碼

X.509證書的結構是用ASN1(Abstract Syntax Notation One)進行描述資料結構,並使用ASN1語法進行編碼。

ASN1採用一個個的資料塊來描述整個資料結構,每個資料塊都有四個部分組成:

1、資料塊資料型別標識(一個位元組)

資料型別包括簡單型別和結構型別。

簡單型別是不能再分解型別,如整型(INTERGER)、位元串(BIT STRING)、位元組串(OCTET STRING)、物件標示符(OBJECT IDENTIFIER)、日期型(UTCTime)等。

結構型別是由簡單型別和結構型別組合而成的,如順序型別(SEQUENCE, SEQUENCE OF)、選擇型別(CHOICE)、集合型別(SET)等。

l         順序型別的資料塊值由按給定順序成員成員資料塊值按照順序組成,;

l         選擇型別的資料塊值由多個成員資料資料塊型別中選擇一個的資料塊值;

l         集合資料塊型別由成員資料塊型別的一個或多個值構成。

這個標識位元組的結構如下:

1.1.        Bit8-bit7

用來標示 TAG 型別,共有四種,分別是universal(00)application(01)context-specific(10)private(11)

這兩位為universal00)時,bit5-bit1的值表示不同的universal的值:

標記(TAG)   對應型別
[UNIVERSAL 1] BOOLEAN [有兩個值:falsetrue]
[UNIVERSAL 2] INTEGER [整型值]
[UNIVERSAL 3] BIT STRING [0位或多位]
[UNIVERSAL 4] OCTET STRING [0位元組或多位元組]
[UNIVERSAL 5] NULL
[UNIVERSAL 6] OBJECT IDENTIFIER [相應於一個物件的獨特標識數字]
[UNIVERSAL 7] OBJECT DESCRIPTOR  [一個物件的簡稱]
[UNIVERSAL 8] EXTERNAL, INSTANCE OF [ASN.1沒有定義的資料型別]
[UNIVERSAL 9] REAL [實數值]
[UNIVERSAL 10] ENUMERATED [數值列表,這些資料每個都有獨特的識別符號,作為ASN.1定義資料型別的一部分]
[UNIVERSAL 12] UTF8String
[UNIVERSAL 13] RELATIVE-OID
[UNIVERSAL 16] SEQUENCE, SEQUENCE OF [有序數列,SEQUENCE裡面的每個數值都可以是不同型別的,而SEQUENCE OF裡是0個或多個型別相同的資料]
[UNIVERSAL 17] SET, SET OF [無序數列,SET裡面的每個數值都可以是不同型別的,而SET OF裡是0個或多個型別相同的資料]
[UNIVERSAL 18] NumericString [09以及空格]
[UNIVERSAL 19] PrintableString [A-Za-z0-9、空格以及符號'()+,-./:=?]
[UNIVERSAL 20] TeletexString, T61String
[UNIVERSAL 21] VideotexString
[UNIVERSAL 22] IA5String
[UNIVERSAL 23] UTCTime [統一全球時間格式]
[UNIVERSAL 24] GeneralizedTime
[UNIVERSAL 25] GraphicString
[UNIVERSAL 26] VisibleString, ISO646String
[UNIVERSAL 27] GeneralString
[UNIVERSAL 28] UniversalString
[UNIVERSAL 29] CHARACTER STRING
[UNIVERSAL 30] BMPString
[UNIVERSAL 31]... reserved for future use

這兩位為context-specific10)時,bit5-bit1的值表示特殊內容:

[0] –- 表示證書的版本
[1] –- issuerUniqueID,表示證書發行者的唯一id
[2] –- subjectUniqueID,表示證書主體的唯一id
[3] –- 表示證書的擴充套件欄位

1.2.        bit6

表示是否為結構型別(1位結構型別)0則表明編碼型別是簡單型別。

1.3.        bit5-bit1

是型別的TAG值。根據bit8-bit7的不同值有不同的含義,具體含義見上面的描述。

 SEQUENCE 型別資料塊,其TAG型別位UNIVERSAL00,屬於結構型別(1),TAG值為1610000)所以其型別標示欄位值為(00110000),即為0x30

再如,證書擴充套件欄位型別的資料塊,TAG型別為(10),屬結構型別(1),TAG的值為300011),所以其型別標示欄位值為(10100011),即為0xA3

2、資料塊長度(1-128個位元組)

長度欄位,有兩種編碼格式。

若長度值小於等於127,則用一個位元組表示,bit8 = 0, bit7-bit1 存放長度值;

若長度值大於127,則用多個位元組表示,可以有2127個位元組。第一個位元組的第8位為1,其它低7位給出後面該域使用的位元組的數量,從該域第二個位元組開始給出資料的長度,高位優先。

還有一種特殊情況,這個位元組為0x80,表示資料塊長度不定,由資料塊結束標識結束資料塊。

3、資料塊的值

存放資料塊的值,具體編碼隨資料塊型別不同而不同。

4、資料塊結束標識(可選)

結束標示欄位,兩個位元組(0x0000,只有在長度值為不定時才會出現。

二、 X.509證書的結構

1X.509證書基本部分

1.1.        版本號.

標識證書的版本(版本1、版本2或是版本3)。

1.2.        序列號

標識證書的唯一整數,由證書頒發者分配的本證書的唯一識別符號。

1.3.        簽名

用於簽證書的演算法標識,由物件識別符號加上相關的引數組成,用於說明本證書所用的數字簽名演算法。例如,SHA-1RSA的物件識別符號就用來說明該數字簽名是利用RSASHA-1雜湊加密。

1.4.        頒發者

證書頒發者的可識別名(DN)。

1.5.        有效期

證書有效期的時間段。本欄位由”Not Before”和”Not After”兩項組成,它們分別由UTC時間或一般的時間表示(在RFC2459中有詳細的時間表示規則)。

1.6.        主體

證書擁有者的可識別名,這個欄位必須是非空的,除非你在證書擴充套件中有別名。

1.7.        主體公鑰資訊

主體的公鑰(以及演算法識別符號)。

1.8.        頒發者唯一識別符號

識別符號—證書頒發者的唯一識別符號,僅在版本2和版本3中有要求,屬於可選項。

1.9.        主體唯一識別符號

證書擁有者的唯一識別符號,僅在版本2和版本3中有要求,屬於可選項。

2X.509證書擴充套件部分

可選的標準和專用的擴充套件(僅在版本2和版本3中使用),擴充套件部分的元素都有這樣的結構:

   Extension ::= SEQUENCE {

        extnID      OBJECT IDENTIFIER,

        critical    BOOLEAN DEFAULT FALSE,

        extnValue   OCTET STRING }

extnID:表示一個擴充套件元素的OID

critical:表示這個擴充套件元素是否極重要

extnValue:表示這個擴充套件元素的值,字串型別。

擴充套件部分包括:

2.1.        發行者金鑰識別符號

證書所含金鑰的唯一識別符號,用來區分同一證書擁有者的多對金鑰。

2.2.        金鑰使用

一個位元串,指明(限定)證書的公鑰可以完成的功能或服務,如:證書籤名、資料加密等。

如果某一證書將 KeyUsage 擴充套件標記為“極重要”,而且設定為“keyCertSign”,則在 SSL 通訊期間該證書出現時將被拒絕,因為該證書擴充套件表示相關私鑰應只用於簽寫證書,而不應該用於 SSL

2.3.        CRL分佈點

指明CRL的分佈地點。

2.4.        私鑰的使用期

指明證書中與公鑰相聯絡的私鑰的使用期限,它也有Not BeforeNot After組成。若此項不存在時,公私鑰的使用期是一樣的。

2.5.        證書策略

由物件識別符號和限定符組成,這些物件識別符號說明證書的頒發和使用策略有關。

2.6.        策略對映

表明兩個CA域之間的一個或多個策略物件識別符號的等價關係,僅在CA證書裡存在。

2.7.        主體別名

指出證書擁有者的別名,如電子郵件地址、IP地址等,別名是和DN繫結在一起的。

2.8.        頒發者別名

指出證書頒發者的別名,如電子郵件地址、IP地址等,但頒發者的DN必須出現在證書的頒發者欄位。

2.9.        主體目錄屬性

指出證書擁有者的一系列屬性。可以使用這一項來傳遞訪問控制資訊。

三、 X.509證書詳細描述

   Certificate ::= SEQUENCE {

        tbsCertificate       TBSCertificate, -- 證書主體

        signatureAlgorithm   AlgorithmIdentifier, -- 證書籤名演算法標識

        signatureValue       BIT STRING --證書籤名值,是使用signatureAlgorithm部分指定的簽名演算法對tbsCertificate證書主題部分簽名後的值.

         }

   TBSCertificate ::= SEQUENCE {

        version         [0] EXPLICIT Version DEFAULT v1, -- 證書版本號

        serialNumber         CertificateSerialNumber, -- 證書序列號,對同一CA所頒發的證書,序列號唯一標識證書

        signature            AlgorithmIdentifier, --證書籤名演算法標識

        issuer               Name,                --證書發行者名稱

        validity             Validity,            --證書有效期

        subject              Name,                --證書主體名稱

        subjectPublicKeyInfo SubjectPublicKeyInfo,--證書公鑰

        issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,

                             -- 證書發行者ID(可選),只在證書版本23中才有

        subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,

                             -- 證書主體ID(可選),只在證書版本23中才有

        extensions      [3] EXPLICIT Extensions OPTIONAL

                             -- 證書擴充套件段(可選),只在證書版本3中才有

        }

   Version ::= INTEGER { v1(0), v2(1), v3(2) }

   CertificateSerialNumber ::= INTEGER

 

   AlgorithmIdentifier ::= SEQUENCE {

        algorithm               OBJECT IDENTIFIER,

        parameters              ANY DEFINED BY algorithm OPTIONAL }

   parameters:

   Dss-Parms ::= SEQUENCE { -- parameters DSA(DSS)演算法時的parameters,RSA演算法沒有此引數

        p             INTEGER,

        q             INTEGER,

        g             INTEGER }

 

signatureValue

Dss-Sig-Value ::= SEQUENCE { -- sha1DSA簽名演算法時,簽名值

                   r       INTEGER,

                      s       INTEGER }

 

   Name ::= CHOICE {

     RDNSequence }

   RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

   RelativeDistinguishedName ::=

     SET OF AttributeTypeAndValue

   AttributeTypeAndValue ::= SEQUENCE {

     type     AttributeType,

     value    AttributeValue }

   AttributeType ::= OBJECT IDENTIFIER

   AttributeValue ::= ANY DEFINED BY AttributeType

 

   Validity ::= SEQUENCE {

        notBefore      Time,  -- 證書有效期起始時間

        notAfter       Time  -- 證書有效期終止時間

        }

   Time ::= CHOICE {

        utcTime        UTCTime,

        generalTime    GeneralizedTime }

   UniqueIdentifier ::= BIT STRING

   SubjectPublicKeyInfo ::= SEQUENCE {

        algorithm            AlgorithmIdentifier, -- 公鑰演算法

        subjectPublicKey     BIT STRING            -- 公鑰值

        }

subjectPublicKey:

RSAPublicKey ::= SEQUENCE { -- RSA演算法時的公鑰值

         modulus            INTEGER, -- n

         publicExponent     INTEGER -- e -- }

 

   Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension

   Extension ::= SEQUENCE {

        extnID      OBJECT IDENTIFIER,

        critical    BOOLEAN DEFAULT FALSE,

        extnValue   OCTET STRING }

四、 X.509數字證書例項

這是從RFC 2459 Internet X.509 Public Key Infrastructure標準文件中摘取的兩個證書例子。本文在例子的原來基礎上加了些註釋。

1DSA證書,CA證書

證書包含699位元組,證書版本號為3

該證書包含以下內容:
(a)
 證書序列號是17 (0x11);
(b)
 證書使用DSASHA-1雜湊演算法簽名;
(c)
 證書發行者的名字是OU=nist; O=gov; C=US
(d)
 證書主體的名字是OU=nist; O=gov; C=US
(e)
 證書的有效期從1997-6-30 1997-12-31;
(f)
 證書包含一個1024 bit DSA 公鑰及其引數(三個整數pqg;
(g)
 證書包含一個使用者金鑰識別符號(subjectKeyIdentifier)擴充套件項
(h)
 證書是一個CA證書(通過basicConstraints基本擴充套件項標識)

0000 30 82 02 b7 695: SEQUENCE    // Certificate:: SEQUENCE型別(30),資料塊長度位元組為282),長度為69502 b7

0004 30 82 02 77 631: . SEQUENCE // tbsCertificate:: SEQUENCE型別,長度631

0008 a0 03          3: . . [0]     // Version:: 特殊內容-證書版本(a0),長度3

0010 02 01          1: . . . INTEGER 2 //整數型別(02),長度1

                     : 02               // 版本3(2)

0013 02 01          1: . . INTEGER 17   // serialNumber:: 整數型別(02),長度1

                     : 11               // 證書序列號 17

0016 30 09          9: . . SEQUENCE   // signature:: SEQUENCE型別(30),長度9

0018 06 07          7: . . . OID 1.2.840.10040.4.3: dsa-with-sha //signature:: OBJECT IDENTIFIER型別,長度7

                     : 2a 86 48 ce 38 04 03   // 表示dsa-with-sha演算法(見注1)

0027 30 2a         42: . . SEQUENCE            // 以下紅色的資料塊表示issuer資訊

0029 31 0b         11: . . . SET

0031 30 09          9: . . . . SEQUENCE

0033 06 03          3: . . . . . OID 2.5.4.6: C

                     : 55 04 06

0038 13 02          2: . . . . . PrintableString 'US'

                     : 55 53

0042 31 0c         12: . . . SET

0044 30 0a         10: . . . . SEQUENCE

0046 06 03          3: . . . . . OID 2.5.4.10: O

                     : 55 04 0a

0051 13 03          3: . . . . . PrintableString 'gov'

                     : 67 6f 76

0056 31 0d         13: . . . SET

0058 30 0b         11: . . . . SEQUENCE

0060 06 03          3: . . . . . OID 2.5.4.11: OU

                     : 55 04 0b

0065 13 04          4: . . . . . PrintableString 'nist'

                     : 6e 69 73 74

0071 30 1e         30: . . SEQUENCE         // validity:: SEQUENCE型別(30),長度30

0073 17 0d         13: . . . UTCTime '970630000000Z' // notBefore:: UTCTime型別(23)長度13

                     : 39 37 30 36 33 30 30 30 30 30 30 30 5a

0088 17 0d         13: . . . UTCTime '971231000000Z' // notBefore:: UTCTime型別(23)長度13

                     : 39 37 31 32 33 31 30 30 30 30 30 30 5a

0103 30 2a         42: . . SEQUENCE          // 以下紅色的資料塊表示subject資訊

0105 31 0b         11: . . . SET

0107 30 09          9: . . . . SEQUENCE

0109 06 03          3: . . . . . OID 2.5.4.6: C

                     : 55 04 06

0114 13 02          2: . . . . . PrintableString 'US'

                     : 55 53

0118 31 0c         12: . . . SET

0120 30 0a         10: . . . . SEQUENCE

0122 06 03          3: . . . . . OID 2.5.4.10: O

                     : 55 04 0a

0127 13 03          3: . . . . . PrintableString 'gov'

                     : 67 6f 76

0132 31 0d         13: . . . SET

0134 30 0b         11: . . . . SEQUENCE

0136 06 03          3: . . . . . OID 2.5.4.11: OU

                     : 55 04 0b

0141 13 04          4: . . . . . PrintableString 'nist'

                     : 6e 69 73 74

0147 30 82 01 b4 436: . . SEQUENCE // subjectPublicKeyInfo:: SEQUENCE型別(30),長度436

0151 30 82 01 29 297: . . . SEQUENCE

0155 06 07          7: . . . . OID 1.2.840.10040.4.1: dsa //algorithm:: OBJECT IDENTIFIER型別,長度7

                     : 2a 86 48 ce 38 04 01    // 表示DSA演算法(見注1)

0164 30 82 01 1c 284: . . . . SEQUENCE        // DSA演算法的parameters,三個整數pqg

0168 02 81 80     128: . . . . . INTEGER       // p引數

                     : d4 38 02 c5 35 7b d5 0b a1 7e 5d 72 59 63 55 d3

                     : 45 56 ea e2 25 1a 6b c5 a4 ab aa 0b d4 62 b4 d2

                     : 21 b1 95 a2 c6 01 c9 c3 fa 01 6f 79 86 83 3d 03

                     : 61 e1 f1 92 ac bc 03 4e 89 a3 c9 53 4a f7 e2 a6

                     : 48 cf 42 1e 21 b1 5c 2b 3a 7f ba be 6b 5a f7 0a

                     : 26 d8 8e 1b eb ec bf 1e 5a 3f 45 c0 bd 31 23 be

                    : 69 71 a7 c2 90 fe a5 d6 80 b5 24 dc 44 9c eb 4d

                     : f9 da f0 c8 e8 a2 4c 99 07 5c 8e 35 2b 7d 57 8d

0299 02 14         20: . . . . . INTEGER       // q引數

                     : a7 83 9b f3 bd 2c 20 07 fc 4c e7 e8 9f f3 39 83

                     : 51 0d dc dd

0321 02 81 80     128: . . . . . INTEGER       // g引數

                     : 0e 3b 46 31 8a 0a 58 86 40 84 e3 a1 22 0d 88 ca

                     : 90 88 57 64 9f 01 21 e0 15 05 94 24 82 e2 10 90

                     : d9 e1 4e 10 5c e7 54 6b d4 0c 2b 1b 59 0a a0 b5

                     : a1 7d b5 07 e3 65 7c ea 90 d8 8e 30 42 e4 85 bb

                     : ac fa 4e 76 4b 78 0e df 6c e5 a6 e1 bd 59 77 7d

                     : a6 97 59 c5 29 a7 b3 3f 95 3e 9d f1 59 2d f7 42

                     : 87 62 3f f1 b8 6f c7 3d 4b b8 8d 74 c4 ca 44 90

                     : cf 67 db de 14 60 97 4a d1 f7 6d 9e 09 94 c4 0d

0452 03 81 84     132: . . . BIT STRING (0 unused bits) // subjectPublicKey:: 公鑰值,BIT STRING型別,長度132位元組(好像應該是131位元組)

0455 02 81 80     128: . . . . INTEGER // 公鑰值,表現為integer型別,128位元組,1024

: aa 98 ea 13 94 a2 db f1 5b 7f 98 2f 78 e7 d8 e3

                     : b9 71 86 f6 80 2f 40 39 c3 da 3b 4b 13 46 26 ee

                     : 0d 56 c5 a3 3a 39 b7 7d 33 c2 6b 5c 77 92 f2 55

                     : 65 90 39 cd 1a 3c 86 e1 32 eb 25 bc 91 c4 ff 80

                     : 4f 36 61 bd cc e2 61 04 e0 7e 60 13 ca c0 9c dd

                     : e0 ea 41 de 33 c1 f1 44 a9 bc 71 de cf 59 d4 6e

                     : da 44 99 3c 21 64 e4 78 54 9d d0 7b ba 4e f5 18

                     : 4d 5e 39 30 bf e0 d1 f6 f4 83 25 4f 14 aa 71 e1

0587 a3 32         50: . . [3]             // extensions:: 特殊內容-證書擴充套件部分(a3),長度50

0589 30 30         48: . . . SEQUENCE

0591 30 0f          9: . . . . SEQUENCE   // 擴充套件basicConstraints

0593 06 03          3: . . . . . OID 2.5.29.19: basicConstraints

                     : 55 1d 13

0598 01 01          1: . . . . . TRUE     // true,表示為CA證書

                     : ff

0601 04 05          5: . . . . . OCTET STRING

                     : 30 03 01 01 ff

0608 30 1d         29: . . . . SEQUENCE   // 擴充套件 subjectKeyIdentifier

0610 06 03          3: . . . . . OID 2.5.29.14: subjectKeyIdentifier

                     : 55 1d 0e

0615 04 16         22: . . . . . OCTET STRING //擴充套件 subjectKeyIdentifier的值

                     : 04 14 e7 26 c5 54 cd 5b a3 6f 35 68 95 aa d5 ff

                     : 1c 21 e4 22 75 d6

0639 30 09          9: . SEQUENCE // signatureAlgorithm:: = AlgorithmIdentifier

0641 06 07          7: . . OID 1.2.840.10040.4.3: dsa-with-sha

                     : 2a 86 48 ce 38 04 03

0650 03 2f         47: . BIT STRING (0 unused bits) // bit串,證書籤名值,47位元組

0652 30 2c         44: . . SEQUENCE

0654 02 14         20: . . . INTEGER       // 簽名值,20位元組,160bit

                     : a0 66 c1 76 33 99 13 51 8d 93 64 2f ca 13 73 de

                     : 79 1a 7d 33

0674 02 14         20: . . . INTEGER       // 簽名值,20位元組,160bit

: 5d 90 f6 ce 92 4a bf 29 11 24 80 28 a6 5a 8e 73

                     : b6 76 02 68

2RSA證書,非CA證書

證書包含675位元組,證書版本號為3

該證書包含以下內容:
(a)
 證書序列號是256 (0x100);
(b)
 證書使用RSAMD2雜湊演算法簽名;
(c)
 證書發行者的名字是OU=Dept. Arquitectura de Computadors; O=Universitat Politecnica de Catalunya; C=ES
(d)
 證書主體的名字是CN=Francisco Jordan;OU=Dept. Arquitectura de Computadors; O=Universitat Politecnica de Catalunya; C=ES
(e)
 證書的有效期從1996-5-21 1997-5-21;
(f)
 證書包含一個768 bit RSA 公鑰;
(g)
 證書是一個非CA證書(通過一個基本擴充套件項標識)
(h)
 證書包含證書主體別名、證書發行者別名都是URLs
(i) 
證書包含一個發行者金鑰識別符號和證書策略擴充套件,和
(j) 
證書包含一個金鑰用法的擴充套件,指定用於數字簽名

 

0000 30 80           : SEQUENCE   (size undefined) // Certificate:: SEQUENCE型別(30),資料塊長度不定,由0000作為結束符

0002 30 82 02 40 576: . SEQUENCE        // tbsCertificate:: SEQUENCE型別,長度576

0006 a0 03          3: . . [0]           // Version:: 特殊內容-證書版本(a0),長度3

0008 02 01          1: . . . INTEGER 2   //整數型別(02),長度1

                     : 02                // 版本3(2)

0011 02 02          2: . . INTEGER 256   //serialNumber:: 整數型別(02),長度2

                     : 01 00             // 證書序列號256

0015 30 0d         13: . . SEQUENCE      // signature:: SEQUENCE型別(30),長度13

0017 06 09          9: . . . OID 1.2.840.113549.1.1.2: MD2WithRSAEncryption

                                     // signature:: OBJECT IDENTIFIER型別,長度9

                     : 2a 86 48 86 f7 0d 01 01 02 //MD2WithRSAEncryption演算法(見注1)

0028 05 00          0: . . . NULL

0030 30 68         88: . . SEQUENCE               // 以下紅色的資料塊表示issuer資訊

0032 31 0b         11: . . . SET

0034 30 09          9: . . . . SEQUENCE

0036 06 03          3: . . . . . OID 2.5.4.6: C

                     : 55 04 06

0041 13 02          2: . . . . . PrintableString 'ES'

                     : 45 53

0045 31 2d         45: . . . SET

0047 30 2b         43: . . . . SEQUENCE

0049 06 03          3: . . . . . OID 2.5.4.10: O

                     : 55 04 0a

0054 13 24         36: . . . . . PrintableString

                     'Universitat Politecnica de Catalunya'

                     : 55 6e 69 76 65 72 73 69 74 61 74 20 50 6f 6c 69

                     : 74 65 63 6e 69 63 61 20 64 65 20 43 61 74 61 6c

                     : 75 6e 79 61

0092 31 2a         42: . . . SET

0094 30 28         40: . . . . SEQUENCE

0096 06 03          3: . . . . . OID 2.5.4.11: OU

                     : 55 04 0b

0101 13 21         33: . . . . . PrintableString

                     'OU=Dept. Arquitectura de Computadors'

                     : 44 65 70 74 2e 20 41 72 71 75 69 74 65 63 74 75

                     : 72 61 20 64 65 20 43 6f 6d 70 75 74 61 64 6f 72

                     : 73

0136 30 1e         30: . . SEQUENCE       // validity:: SEQUENCE型別(30),長度30

0138 17 0d         13: . . . UTCTime '960521095826Z' // notBefore:: UTCTime型別(23)長度13

                     : 39 36 30 37 32 32 31 37 33 38 30 32 5a

0153 17 0d         13: . . . UTCTime '979521095826Z' // notBefore:: UTCTime型別(23)長度13

                     : 39 37 30 37 32 32 31 37 33 38 30 32 5a

0168 30 81 83     112: . . SEQUENCE              // 以下紅色的資料塊表示subject資訊

0171 31 0b         11: . . . SET

0173 30 09          9: . . . . SEQUENCE

0175 06 03          3: . . . . . OID 2.5.4.6: C

                     : 55 04 06

0180 13 02          2: . . . . . PrintableString 'ES'

                     : 45 53

0184 31 2d         12: . . . SET

0186 30 2b         16: . . . . SEQUENCE

0188 06 03          3: . . . . . OID 2.5.4.10: O

                     : 55 04 0a

0193 13 24         36: . . . . . PrintableString

                     'Universitat Politecnica de Catalunya'

                     : 55 6e 69 76 65 72 73 69 74 61 74 20 50 6f 6c 69

                     : 74 65 63 6e 69 63 61 20 64 65 20 43 61 74 61 6c

                     : 75 6e 79 61

0231 31 2a         42: . . . SET

0233 30 28         40: . . . . SEQUENCE

0235 06 03          3: . . . . . OID 2.5.4.11: OU

                     : 55 04 0b

0240 13 21         33: . . . . . PrintableString

                     'Dept. Arquitectura de Computadors'

                     : 44 65 70 74 2e 20 41 72 71 75 69 74 65 63 74 75

                     : 72 61 20 64 65 20 43 6f 6d 70 75 74 61 64 6f 72

                     : 73

0275 31 19         22: . . . SET

0277 30 17         20: . . . . SEQUENCE

0279 06 03          3: . . . . . OID 2.5.4.3: CN

                     : 55 04 03

0284 13 10         16: . . . . . PrintableString 'Francisco Jordan'

                     : 46 72 61 6e 63 69 73 63 6f 20 4a 6f 72 64 61 6e

0302 30 7c          2: . . SEQUENCE // subjectPublicKeyInfo:: SEQUENCE型別(30),長度不定

0304 30 0d         13: . . . SEQUENCE

0306 06 09          9: . . . . OID 1.2.840.113549.1.1.1: RSAEncryption //algorithm:: OBJECT IDENTIFIER型別,長度9

                     : 2a 86 48 86 f7 0d 01 01 01 // 表示RSA演算法(見注1)

0317 05 00          0: . . . . NULL

0319 03 6b        107: . . . BIT STRING  (0 unused bits) // subjectPublicKey:: 公鑰值,BIT STRING型別,長度107位元組

                     : 00   (0 unused bits)    

0321 03 68        104: . . . . BIT STRING  (0 unused bits)

0323 02 61         97: . . . . . INTEGER (0 unused bits) // 公鑰值,96位元組,768

                     : 00   (0 unused bits) 

: be aa 8b 77 54 a3 af ca 77 9f 2f b0 cf 43 88 ff

                     : a6 6d 79 55 5b 61 8c 68 ec 48 1e 8a 86 38 a4 fe

                     : 19 b8 62 17 1d 9d 0f 47 2c ff 63 8f 29 91 04 d1

                     : 52 bc 7f 67 b6 b2 8f 74 55 c1 33 21 6c 8f ab 01

                     : 95 24 c8 b2 73 93 9d 22 61 50 a9 35 fb 9d 57 50

                     : 32 ef 56 52 50 93 ab b1 88 94 78 56 15 c6 1c 8b

0423 02 03          3: . . . . . INTEGER   // RSA加密演算法的exponent

                     : 01 00 01

0428 a3 81 97     151: . . [3]         // extensions:: 特殊內容-證書擴充套件部分(a3),長度151

0431 30 3c         60: . . . SEQUENCE

0433 30 1f         31: . . . . SEQUENCE        // 擴充套件發行者金鑰識別符號authorityKeyIdentifier

0435 06 03          3: . . . . . OID 2.5.29.35: authorityKeyIdentifier

                     : 55 1d 23

0440 04 14         22: . . . . . OCTET STRING

                     : 30 12 80 10 0e 6b 3a bf 04 ea 04 c3 0e 6b 3a bf

                     : 04 ea 04 c3

0464 30 19         25: . . . . SEQUENCE       // 擴充套件keyUsage

0466 06 03          3: . . . . . OID 2.5.29.15: keyUsage

                     : 55 1d 0f

0471 01 01          1: . . . . . TRUE

                     : ff

0474 04 04          4: . . . . . OCTET STRING

                     : 03 02 07 80

0480 30 19         25: . . . . SEQUENCE       //擴充套件certificatePolicies

0482 06 03          3: . . . . . OID 2.5.29.32: certificatePolicies

                     : 55 1d 20

0487 04 21         33: . . . . . OCTET STRING

                     : 30 1f 30 1d 06 04 2a 84 80 00 30 15 30 07 06 05

                     : 2a 84 80 00 01 30 0a 06 05 2a 84 80 00 02 02 01

                     : 0a

0522 30 1c         28: . . . . SEQUENCE       //擴充套件subjectAltName

0524 06 03          3: . . . . . OID 2.5.29.17: subjectAltName

                     : 55 1d 11

0529 04 15         21: . . . . . OCTET STRING

                     : 30 13 86 11 68 74 74 70 3a 2f 2f 61 63 2e 75 70

                     : 63 2e 65 73 2f

0552 30 19         25: . . . . SEQUENCE      //擴充套件issuerAltName

0554 06 03          3: . . . . . OID 2.5.29.18: issuerAltName

                     : 55 1d 12

0559 04 12         18: . . . . . OCTET STRING

                     : 30 14 86 12 68 74 74 70 3a 2f 2f 77 77 77 2e 75

                     : 70 63 2e 65

0579 30 80           : . SEQUENCE (indefinite length) // signatureAlgorithm不知為何這裡的前面演算法為空

0581 06 07          7: . . OID

0583 05 00          0: . . NULL

0585 00 00          0: . . end of contents marker

0587 03 81 81      47: . BIT STRING      // 簽名值

                     : 00      (0 unused bits)

                     : 5c 01 bd b5 41 88 87 7a 0e d3 0e 6b 3a bf 04 ea

                     : 04 cb 5f 61 72 3c a3 bd 78 f5 66 17 fe 37 3a ab

                     : eb 67 bf b7 da a8 38 f6 33 15 71 75 2f b9 8c 91

                     : a0 e4 87 ba 4b 43 a0 22 8f d3 a9 86 43 89 e6 50

                     : 5c 01 bd b5 41 88 87 7a 0e d3 0e 6b 3a bf 04 ea

                     : 04 cb 5f 61 72 3c a3 bd 78 f5 66 17 fe 37 3a ab

                     : eb 67 bf b7 da a8 38 f6 33 15 71 75 2f b9 8c 91

                     : a0 e4 87 ba 4b 43 a0 22 8f d3 a9 86 43 89 e6 50

0637 00 00          0: . . end of contents marker

 

1: OID表示的演算法

DSA -- 1.2.840.10040.4.1

sha1DSA -- 1.2.840.10040.4.3

RSA -- 1.2.840.113549.1.1.1

md2RSA -- 1.2.840.113549.1.1.2

md4RSA -- 1.2.840.113549.1.1.3

md5RSA -- 1.2.840.113549.1.1.4

sha1RSA -- 1.2.840.113549.1.1.5

參考:

RFC 2459 Internet X.509 Public Key Infrastructure

X.509證書結構簡介及例項

X.509第三版的證書結構


來源:http://www.cnblogs.com/chnking/archive/2007/08/28/872104.html


 

相關文章