X.509 數字證書結構簡介


1、簡介

X.509被廣泛使用的數字證書標准,是由國際電聯電信委員會(ITU-T)為單點登錄(SSO-Single Sign-on)和授權管理基礎設施(PMI-Privilege Management Infrastructure)制定的PKI標准。X.509定義了(但不僅限於)公鑰證書、證書吊銷清單、屬性證書和證書路徑驗證算法等證書標准。

在X.509系統中,CA簽發的證書依照X.500的管理,綁定了一個唯一甄別名(DN-Distinguished Name ),可以包含多個字段和值,還可以支持別名(Alternative Name )。

  一個組織受信任的根證書會分發給所有需要用到的PKI系統的員工手上。主流瀏覽器:IE、Netscape/Mozilla,Opera和Safari會預先安裝一部分根證書,這些根證書都是受信任的證書認證機構CA,這樣他們頒發的證書,瀏覽器將可以直接信任。雖然用戶可以刪除或者禁用這些根證書,但事實上,用戶很少這么做。在最新的微軟平台,甚至會在用戶移除了預先安置的根證書后,當用戶再訪問這些被刪除的根證書網站的時候,會自動將這些根證書恢復到信任列表中。

  X.509包含了一個證書吊銷列表(CRL-Certificate Revocation List)實施的標准,這在PKI系統中經常被人所忽略。IETF提出的檢查證書有效性的方法是在線證書狀態(OCSP- Online Certificate Status Protocol)。Firefo3 缺省就是使用OCSP協議。

 

2、歷史和用途

  X.509最初是在1988年的7月3日發布的,版本是X.509 v1,當時是作為ITU X.500目錄服務標准的一部分。它設定了一系列嚴格的CA分級體系來頒發數字證書。和其他網絡信任模型(譬如PGP)對比,任何人,不僅僅是特定的CA,可以簽發並驗證其他密鑰證書的有效性。

  X.509 2 版引入了主體和簽發人唯一標識符的概念,以解決主體和/或簽發人名稱在一段時間后可能重復使用的問題。大多數證書監視文檔都極力建議不要重復使用主體或簽發人名稱,而且建議證書不要使用唯一標識符。版本 2 證書尚未得到廣泛使用。

  X.509 3 版是最新的版本(1996 年)。它支持擴展的概念,因此任何人均可定義擴展並將其納入證書中。現在常用的擴展包括:KeyUsage(僅限密鑰用於特殊目的,例如“只簽”)和 AlternativeNames(允許其它標識與該公鑰關聯,例如 DNS 名、電子郵件地址、IP 地址)。擴展可標記為“極重要”,以表示應選中該擴展並強制執行或使用。例如,如果某一證書將 KeyUsage 擴展標記為“極重要”,而且設置為“keyCertSign”,則在 SSL 通信期間該證書出現時將被拒絕,因為該證書擴展表示相關私鑰應只用於簽寫證書,而不應該用於 SSL。

 

3、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)等。

  順序類型的數據塊值由按給定順序成員成員數據塊值按照順序組成;

  選擇類型的數據塊值由多個成員數據數據塊類型中選擇一個的數據塊值;

  集合數據塊類型由成員數據塊類型的一個或多個值構成。

  這個標識字節的結構如下:

  1.1)Bit8-bit7用來標示 TAG 類型,共有四種,分別是universal(00)、application(01)、context-specific(10)和private(11)。

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

  1.3)Bit5-bit1是類型的TAG值。根據bit8-bit7的不同值有不同的含義,具體含義見下表。

  當Bit8-bit7為universal(00)時,bit5-bit1的值表示不同的universal的值:

  標記(TAG)  對應類型        備注

  [UNIVERSAL 1]  BOOLEAN    [有兩個值:false或true]

  [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]  Numeric String  [0-9以及空格]

  [UNIVERSAL 19  ]Printable String  [A-Z、a-z、0-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

  當Bit8-bit7為context-specific(10)時,bit5-bit1的值表示特殊內容:

    [0] –- 表示證書的版本

    [1] –- issuerUniqueID,表示證書發行者的唯一id

    [2] –- subjectUniqueID,表示證書主體的唯一id

    [3] –- 表示證書的擴展字段

  如 SEQUENCE 類型數據塊,其TAG類型位UNIVERSAL(00),屬於結構類型(1),TAG值為16(10000)所以其類型標示字段值為(00110000),即為0x30。再如,證書擴展字段類型的數據塊,TAG類型為(10),屬結構類型(1),TAG的值為3(00011),所以其類型標示字段值為(10100011),即為0xA3。

  2)數據塊長度(1-128個字節)

  長度字段,有兩種編碼格式。

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

  若長度值大於127,則用多個字節表示,可以有2到127個字節。第一個字節的第8位為1,其它低7位給出后面該域使用的字節的數量,從該域第二個字節開始給出數據的長度,高位優先。

  還有一種特殊情況,這個字節為0x80,表示數據塊長度不定,由數據塊結束標識結束數據塊。

  3)數據塊的值

  存放數據塊的值,具體編碼隨數據塊類型不同而不同。

  4)數據塊結束標識(可選)

  結束標示字段,兩個字節(0x0000),只有在長度值為不定時才會出現。

 

4、X.509證書的結構

  1)X.509證書基本部分

  1.1)版本號.

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

  1.2)序列號

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

  1.3)簽名

    用於簽證書的算法標識,由對象標識符加上相關的參數組成,用於說明本證書所用的數字簽名算法。例如,SHA-1和RSA的對象標識符就用來說明該數字簽名是利用RSA對SHA-1雜湊加密。

  1.4)頒發者

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

  1.5)有效期

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

  1.6)主體

    證書擁有者的可識別名,這個字段必須是非空的,除非你在證書擴展中有別名。

  1.7)主體公鑰信息

    主體的公鑰(以及算法標識符)。

  1.8)頒發者唯一標識符

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

  1.9)主體唯一標識符

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

  2)X.509證書擴展部分

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

  Extension ::= SEQUENCE {

  extnID OBJECT IDENTIFIER,

  critical BOOLEAN DEFAULT FALSE,

  extnValue OCTET STRING }

  extnID:表示一個擴展元素的OID

  critical:表示這個擴展元素是否極重要

  extnValue:表示這個擴展元素的值,字符串類型。

  2)擴展部分包括:

  2.1)發行者密鑰標識符

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

  2.2)密鑰使用

    一個比特串,指明(限定)證書的公鑰可以完成的功能或服務,如:證書簽名、數據加密等。如果某一證書將 KeyUsage 擴展標記為“極重要”,而且設置為“keyCertSign”,則在 SSL 通信期間該證書出現時將被拒絕,因為該證書擴展表示相關私鑰應只用於簽寫證書,而不應該用於 SSL。

  2.3)CRL分布點

    指明CRL的分布地點。

  2.4) 私鑰的使用期

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

  2.5) 證書策略

    由對象標識符和限定符組成,這些對象標識符說明證書的頒發和使用策略有關。

  2.6) 策略映射

    表明兩個CA域之間的一個或多個策略對象標識符的等價關系,僅在CA證書里存在。

  2.7)主體別名

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

  2.8) 頒發者別名

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

  2.9)主體目錄屬性

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


5、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(可選),只在證書版本2、3中才有

subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,

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

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 }

 

6、 X.509數字證書實例

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

1)DSA證書,CA證書

證書包含699字節,證書版本號為3。

該證書包含以下內容:

(a) 證書序列號是17 (0x11);

(b) 證書使用DSA和SHA-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 公鑰及其參數(三個整數p、q、g);

(g) 證書包含一個使用者密鑰標識符(subjectKeyIdentifier)擴展項

(h) 證書是一個CA證書(通過basicConstraints基本擴展項標識)

地址 內容 意義

0000 30 82 02 b7 SEQUENCE Certificate:: SEQUENCE類型(30),數據塊長度字節為2(82),長度為695(02 b7)

0004 30 82 02 77 SEQUENCE tbsCertificate:: SEQUENCE類型,長度631

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

0010 02 01 02 INTEGER 2 version::整數類型(02),長度1,版本3(2)

0013 02 01 11 INTEGER 17 serialNumber::整數類型(02),長度1,證書序列號 17

0016 30 09 SEQUENCE signature:: SEQUENCE類型(30),長度9

0018 06 07 signature:: OBJECT IDENTIFIER類型,長度7,dsa-with-sha算法

2a 86 48 ce 38 04 03 OID 1.2.840.10040.4.3: dsa-with-sha

0027 30 2a SEQUENCE 以下的數據塊表示issuer信息,長度為42

0029 31 0b SET 開始一個集合,長度為11

0031 30 09 SEQUENCE 開始一個序列,長度為9

0033 06 03 OBJECT IDENTIFIER類型,長度3

55 04 06 OID 2.5.4.6 C

0038 13 02 55 53 PrintableString 'US'

0042 31 0c SET 開始一個集合,長度為12

0044 30 0a SEQUENCE 開始一個序列,長度為10

0046 06 03 OBJECT IDENTIFIER類型,長度3

55 04 0a OID 2.5.4.10 O

0051 13 03 67 6f 76 PrintableString 'gov'

0056 31 0d SET 開始一個集合,長度為13

0058 30 0b SEQUENCE 開始一個序列,長度為11

0060 06 03 OBJECT IDENTIFIER類型,長度3

55 04 0b OID 2.5.4.11: OU

0065 13 04 6e 69 73 74 PrintableString 'nist'

0071 30 1e SEQUENCE validity:: SEQUENCE類型(30),長度30

0073 17 0d notBefore:: UTCTime類型(23),長度13

39 37 30 36 33 30 30 30

30 30 30 30 5a UTCTime '970630000000Z'

0088 17 0d notBefore:: UTCTime類型(23),長度13

39 37 31 32 33 31 30 30

30 30 30 30 5a UTCTime '971231000000Z'

0103 30 2a SEQUENCE以下數據塊表示subject信息,長度42

0105 31 0b SET,長度11

0107 30 09 SEQUENCE 長度9

0109 06 03 OBJECT IDENTIFIER類型,長度3

55 04 06 OID 2.5.4.6: C

0114 13 02 55 53 PrintableString 'US'

0118 31 0c SET,長度12

0120 30 0a SEQUENCE 長度10

0122 06 03 OBJECT IDENTIFIER類型,長度3

55 04 0aOID 2.5.4.10: O

0127 13 03 67 6f 76 PrintableString 'gov'

0132 31 0d SET,長度13

0134 30 0b SEQUENCE 長度11

0136 06 03 OBJECT IDENTIFIER類型,長度3

55 04 0b OID 2.5.4.11: OU

0141 13 04 6e 69 73 74 PrintableString 'nist'

0147 30 82 01 b4 SEQUENCE subjectPublicKeyInfo:: SEQUENCE類型(30), 長度436

0151 30 82 01 29 SEQUENCE類型(30), 長度297

0155 06 07 IDENTIFIER類型,長度7

2a 86 48 ce 38 04 01 OID 1.2.840.10040.4.1

0164 30 82 01 1c SEQUENCE類型(30), 長度284

DSA算法的parameters,三個整數p、q、g

0168 02 81 80 INTEGER p參數,長度128

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 INTEGER q參數,長度20

a7 83 9b f3 bd 2c 20 07 fc 4c

e7 e8 9f f3 39 83 51 0d dc dd

0321 02 81 80 INTEGER g參數,長度128

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 BIT STRING (0 unused bits) subjectPublicKey :: 公鑰值,BIT STRING類型,長度132字節(好像應該是131字節)

0455 02 81 80 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 extensions:: 特殊內容-證書擴展部分(a3) ,長度50

0589 30 30 SEQUENCE, 長度48

0591 30 0f SEQUENCE 擴展basicConstraints,長度9

0593 06 03 55 1d 13 OID 2.5.29.19: basicConstraints

0598 01 01 ff BOOLEAN true,表示為CA證書

0601 04 05 OCTET STRING, 長度5

30 03 01 01 ff

0608 30 1d SEQUENCE 擴展 subjectKeyIdentifier,長度29

0610 06 03 55 1d 0e OID 2.5.29.14: subjectKeyIdentifier

0615 04 16 OCTET STRING擴展 subjectKeyIdentifier的值, 長度22

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 SEQUENCE signatureAlgorithm:: = AlgorithmIdentifier, 長度9

0641 06 07 2a 86 48 ce 38 04 03 OID 1.2.840.10040.4.3: dsa-with-sha

0650 03 2f BIT STRING (0 unused bits) bit串,證書簽名值,47字節

0652 30 2c SEQUENCE, 長度44

0654 02 14 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 INTEGER 簽名值,20字節,160bit

5d 90 f6 ce 92 4a bf 29 11 24 80

28 a6 5a 8e 73 b6 76 02 68


2)RSA證書,非CA證書

證書包含675字節,證書版本號為3。

該證書包含以下內容:

(a) 證書序列號是256 (0x100);

(b) 證書使用RSA和MD2哈希算法簽名;

(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),數據塊長度不定,由00、00作為結束符

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM