X.509 數字證書結構和例項
一、 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)。 這兩位為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] NumericString [0-9以及空格]
[UNIVERSAL 19] PrintableString [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
這兩位為context-specific(10)時,bit5-bit1的值表示特殊內容:
[0] –- 表示證書的版本
[1] –- issuerUniqueID,表示證書發行者的唯一id
[2] –- subjectUniqueID,表示證書主體的唯一id
[3] –- 表示證書的擴充套件欄位
1.2. bit6 表示是否為結構型別(1位結構型別);0則表明編碼型別是簡單型別。 1.3. bit5-bit1 是型別的TAG值。根據bit8-bit7的不同值有不同的含義,具體含義見上面的描述。 如 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),只有在長度值為不定時才會出現。 二、 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.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. 主體目錄屬性 指出證書擁有者的一系列屬性。可以使用這一項來傳遞訪問控制資訊。 三、 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 } 四、 X.509數字證書例項 這是從RFC 2459 Internet X.509 Public Key Infrastructure標準文件中摘取的兩個證書例子。本文在例子的原來基礎上加了些註釋。 1、DSA證書,CA證書 證書包含699位元組,證書版本號為3。 該證書包含以下內容: 0000 30 82 02 b7 695:
SEQUENCE //
Certificate:: SEQUENCE型別(30),資料塊長度位元組為2(82),長度為695(02 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,三個整數p、q、g 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 2、RSA證書,非CA證書 證書包含675位元組,證書版本號為3。 該證書包含以下內容: 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 參考: RFC 2459 Internet X.509 Public Key
Infrastructure 來源:http://www.cnblogs.com/chnking/archive/2007/08/28/872104.html
(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基本擴充套件項標識)
(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) 證書包含一個金鑰用法的擴充套件,指定用於數字簽名
相關文章
- mmc如何管理本機上的(數字/x.509)證書
- https數字證書作用和數字證書是否可以登出?HTTP
- SSL證書屬於數字證書嗎?數字證書有哪些
- 數字證書
- 證書的數字簽名和認證 (轉)
- Android 安全加密:數字簽名和數字證書Android加密
- Android安全加密:數字簽名和數字證書Android加密
- 數字證書原理
- 數字證書不僅有SSL證書,數字證書型別科普大全型別
- 非對稱加密和數字證書加密
- 利用X.509證書對XML進行加密和簽名XML加密
- 深入理解加密、解密、數字簽名和數字證書加密解密
- go-自籤ca證書,客戶端數字證書,服務端數字證書Go客戶端服務端
- 數字證書認證(CA)中心
- 數字證書掃盲
- 驗證數字具有指定的位數區間程式碼例項
- Oracle例項的程式結構和記憶體結構Oracle記憶體
- C++ 結構體例項和類例項的初始化C++結構體
- 如何申請數字證書?
- PKI/CA與數字證書
- PKI 數字證書隨筆
- ORACLE例項的程式結構和記憶體結構(轉)Oracle記憶體
- SSL數字證書是什麼?SSL數字證書具體有什麼作用?
- ruby中的類例項變數和例項的例項變數變數
- js獲取數字和字母隨機數程式碼例項JS隨機
- ssl數字證書如何選購?
- 常見的數字證書格式
- 數字證書的授權鏈
- 驗證字串是否包含英文字元、數字或者漢字程式碼例項字串字元
- 一文讀懂Https的安全性原理、數字證書、單項認證、雙項認證等HTTP
- 和數軟體取得8項軟體著作權和2項專利證書
- 密碼學系列之:PKI的證書格式表示X.509密碼學
- 檢測字串中數字和字母的數量程式碼例項字串
- FDA ESG的數字簽名證書是什麼?怎麼獲取FDA ESG 數字證書?
- CA數字證書包括哪些內容?
- HTTPS-自己生成數字證書HTTP
- SSL協議與數字證書原理協議
- cer pfx格式數字證書區別