日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

X.509 数字证书结构和实例

發(fā)布時(shí)間:2025/3/18 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 X.509 数字证书结构和实例 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://www.cppblog.com/sleepwom/archive/2010/07/08/119746.html

一、?X.509數(shù)字證書的編碼

X.509證書的結(jié)構(gòu)是用ASN1(Abstract Syntax Notation One)進(jìn)行描述數(shù)據(jù)結(jié)構(gòu),并使用ASN1語法進(jìn)行編碼。

ASN1采用一個(gè)個(gè)的數(shù)據(jù)塊來描述整個(gè)數(shù)據(jù)結(jié)構(gòu),每個(gè)數(shù)據(jù)塊都有四個(gè)部分組成:

1、數(shù)據(jù)塊數(shù)據(jù)類型標(biāo)識(一個(gè)字節(jié))

數(shù)據(jù)類型包括簡單類型和結(jié)構(gòu)類型。

簡單類型是不能再分解類型,如整型(INTERGER)、比特串(BIT STRING)、字節(jié)串(OCTET STRING)、對象標(biāo)示符(OBJECT IDENTIFIER)、日期型(UTCTime)等。

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

l?????????順序類型的數(shù)據(jù)塊值由按給定順序成員成員數(shù)據(jù)塊值按照順序組成,;

l?????????選擇類型的數(shù)據(jù)塊值由多個(gè)成員數(shù)據(jù)數(shù)據(jù)塊類型中選擇一個(gè)的數(shù)據(jù)塊值;

l?????????集合數(shù)據(jù)塊類型由成員數(shù)據(jù)塊類型的一個(gè)或多個(gè)值構(gòu)成。

這個(gè)標(biāo)識字節(jié)的結(jié)構(gòu)如下:

1.1.????????Bit8-bit7

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

這兩位為universal(00)時(shí),bit5-bit1的值表示不同的universal的值:

標(biāo)記(TAG) ??對應(yīng)類型

[UNIVERSAL 1] BOOLEAN [有兩個(gè)值:false或true]

[UNIVERSAL 2] INTEGER [整型值]

[UNIVERSAL 3] BIT STRING [0位或多位]

[UNIVERSAL 4] OCTET STRING [0字節(jié)或多字節(jié)]

[UNIVERSAL 5] NULL

[UNIVERSAL 6] OBJECT IDENTIFIER [相應(yīng)于一個(gè)對象的獨(dú)特標(biāo)識數(shù)字]

[UNIVERSAL 7] OBJECT DESCRIPTOR ?[一個(gè)對象的簡稱]

[UNIVERSAL 8] EXTERNAL, INSTANCE OF [ASN.1沒有定義的數(shù)據(jù)類型]

[UNIVERSAL 9] REAL [實(shí)數(shù)值]

[UNIVERSAL 10] ENUMERATED [數(shù)值列表,這些數(shù)據(jù)每個(gè)都有獨(dú)特的標(biāo)識符,作為ASN.1定義數(shù)據(jù)類型的一部分]

[UNIVERSAL 12] UTF8String

[UNIVERSAL 13] RELATIVE-OID

[UNIVERSAL 16] SEQUENCE, SEQUENCE OF [有序數(shù)列,SEQUENCE里面的每個(gè)數(shù)值都可以是不同類型的,而SEQUENCE OF里是0個(gè)或多個(gè)類型相同的數(shù)據(jù)]

[UNIVERSAL 17] SET, SET OF [無序數(shù)列,SET里面的每個(gè)數(shù)值都可以是不同類型的,而SET OF里是0個(gè)或多個(gè)類型相同的數(shù)據(jù)]

[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 [統(tǒng)一全球時(shí)間格式]

[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)時(shí),bit5-bit1的值表示特殊內(nèi)容:

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

[1] –-?issuerUniqueID,表示證書發(fā)行者的唯一id

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

[3] –-?表示證書的擴(kuò)展字段

1.2.????????bit6

表示是否為結(jié)構(gòu)類型(1位結(jié)構(gòu)類型);0則表明編碼類型是簡單類型。

1.3.????????bit5-bit1

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

如?SEQUENCE?類型數(shù)據(jù)塊,其TAG類型位UNIVERSAL(00),屬于結(jié)構(gòu)類型(1),TAG值為16(10000)所以其類型標(biāo)示字段值為(00110000),即為0x30。

再如,證書擴(kuò)展字段類型的數(shù)據(jù)塊,TAG類型為(10),屬結(jié)構(gòu)類型(1),TAG的值為3(00011),所以其類型標(biāo)示字段值為(10100011),即為0xA3。

2、數(shù)據(jù)塊長度(1-128個(gè)字節(jié))

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

若長度值小于等于127,則用一個(gè)字節(jié)表示,bit8 = 0, bit7-bit1?存放長度值;

若長度值大于127,則用多個(gè)字節(jié)表示,可以有2到127個(gè)字節(jié)。第一個(gè)字節(jié)的第8位為1,其它低7位給出后面該域使用的字節(jié)的數(shù)量,從該域第二個(gè)字節(jié)開始給出數(shù)據(jù)的長度,高位優(yōu)先。

還有一種特殊情況,這個(gè)字節(jié)為0x80,表示數(shù)據(jù)塊長度不定,由數(shù)據(jù)塊結(jié)束標(biāo)識結(jié)束數(shù)據(jù)塊。

3、數(shù)據(jù)塊的值

存放數(shù)據(jù)塊的值,具體編碼隨數(shù)據(jù)塊類型不同而不同。

4、數(shù)據(jù)塊結(jié)束標(biāo)識(可選)

結(jié)束標(biāo)示字段,兩個(gè)字節(jié)(0x0000),只有在長度值為不定時(shí)才會出現(xiàn)。

二、?X.509證書的結(jié)構(gòu)

1、X.509證書基本部分

1.1.????????版本號.

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

1.2.????????序列號

標(biāo)識證書的唯一整數(shù),由證書頒發(fā)者分配的本證書的唯一標(biāo)識符。

1.3.????????簽名

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

1.4.????????頒發(fā)者

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

1.5.????????有效期

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

1.6.????????主體

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

1.7.????????主體公鑰信息

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

1.8.????????頒發(fā)者唯一標(biāo)識符

標(biāo)識符—證書頒發(fā)者的唯一標(biāo)識符,僅在版本2和版本3中有要求,屬于可選項(xiàng)。

1.9.????????主體唯一標(biāo)識符

證書擁有者的唯一標(biāo)識符,僅在版本2和版本3中有要求,屬于可選項(xiàng)。

2、X.509證書擴(kuò)展部分

可選的標(biāo)準(zhǔn)和專用的擴(kuò)展(僅在版本2和版本3中使用),擴(kuò)展部分的元素都有這樣的結(jié)構(gòu):

?? Extension?::=?SEQUENCE?{ ??????? extnID????? OBJECT IDENTIFIER, ??????? critical??? BOOLEAN DEFAULT FALSE, ??????? extnValue?? OCTET STRING?}

extnID:表示一個(gè)擴(kuò)展元素的OID

critical:表示這個(gè)擴(kuò)展元素是否極重要

extnValue:表示這個(gè)擴(kuò)展元素的值,字符串類型。

擴(kuò)展部分包括:

2.1.????????發(fā)行者密鑰標(biāo)識符

證書所含密鑰的唯一標(biāo)識符,用來區(qū)分同一證書擁有者的多對密鑰。

2.2.????????密鑰使用

一個(gè)比特串,指明(限定)證書的公鑰可以完成的功能或服務(wù),如:證書簽名、數(shù)據(jù)加密等。

如果某一證書將?KeyUsage?擴(kuò)展標(biāo)記為“極重要”,而且設(shè)置為“keyCertSign”,則在?SSL?通信期間該證書出現(xiàn)時(shí)將被拒絕,因?yàn)樵撟C書擴(kuò)展表示相關(guān)私鑰應(yīng)只用于簽寫證書,而不應(yīng)該用于?SSL。

2.3.????????CRL分布點(diǎn)

指明CRL的分布地點(diǎn)。

2.4.????????私鑰的使用期

指明證書中與公鑰相聯(lián)系的私鑰的使用期限,它也有Not Before和Not After組成。若此項(xiàng)不存在時(shí),公私鑰的使用期是一樣的。

2.5.????????證書策略

由對象標(biāo)識符和限定符組成,這些對象標(biāo)識符說明證書的頒發(fā)和使用策略有關(guān)。

2.6.????????策略映射

表明兩個(gè)CA域之間的一個(gè)或多個(gè)策略對象標(biāo)識符的等價(jià)關(guān)系,僅在CA證書里存在。

2.7.????????主體別名

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

2.8.????????頒發(fā)者別名

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

2.9.????????主體目錄屬性

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

三、?X.509證書詳細(xì)描述

?? Certificate?::=?SEQUENCE?{ ??????? tbsCertificate?????? TBSCertificate, -- 證書主體 ??????? signatureAlgorithm?? AlgorithmIdentifier, -- 證書簽名算法標(biāo)識 ??????? signatureValue?????? BIT STRING?--證書簽名值,是使用signatureAlgorithm部分指定的簽名算法對tbsCertificate證書主題部分簽名后的值. ???????? } ?? TBSCertificate?::=?SEQUENCE?{ ??????? version???????? [0]?EXPLICIT Version DEFAULT v1, -- 證書版本號 ??????? serialNumber???????? CertificateSerialNumber, -- 證書序列號,對同一CA所頒發(fā)的證書,序列號唯一標(biāo)識證書 ????? ??signature??????????? AlgorithmIdentifier, --證書簽名算法標(biāo)識 ??????? issuer?????????????? Name,??????????????? --證書發(fā)行者名稱 ??????? validity???????????? Validity,??????????? --證書有效期 ??????? subject????????????? Name,??????????????? --證書主體名稱 ??????? subjectPublicKeyInfo SubjectPublicKeyInfo,--證書公鑰 ??????? issuerUniqueID?[1]?IMPLICIT UniqueIdentifier OPTIONAL, ???????????????????????????? -- 證書發(fā)行者ID(可選),只在證書版本2、3中才有 ??????? subjectUniqueID [2]?IMPLICIT UniqueIdentifier OPTIONAL, ???????????????????????????? -- 證書主體ID(可選),只在證書版本2、3中才有 ??????? extensions????? [3]?EXPLICIT Extensions OPTIONAL ???????????????????????????? -- 證書擴(kuò)展段(可選),只在證書版本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)算法時(shí)的parameters,
RSA算法沒有此參數(shù) ?? ?????p???????? ????INTEGER, ?? ?????q???????????? INTEGER, ?? ?????g???????????? INTEGER?} ? signatureValue: Dss-Sig-Value?::=?SEQUENCE?{?-- sha1DSA簽名算法時(shí),簽名值 ?????????????????? 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, ?-- 證書有效期起始時(shí)間 ??????? notAfter?????? Time??-- 證書有效期終止時(shí)間 ??????? } ?? Time ::= CHOICE { ??????? utcTime??????? UTCTime, ??????? generalTime??? GeneralizedTime } ?? UniqueIdentifier?::=?BIT STRING ?? SubjectPublicKeyInfo?::=?SEQUENCE?{ ??????? algorithm????? ??????AlgorithmIdentifier,?-- 公鑰算法 ??????? subjectPublicKey???? BIT STRING??????????? -- 公鑰值 ??????? } subjectPublicKey: RSAPublicKey ::= SEQUENCE {?-- RSA算法時(shí)的公鑰值 ???????? 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數(shù)字證書實(shí)例

這是從RFC 2459 Internet X.509 Public Key Infrastructure標(biāo)準(zhǔn)文檔中摘取的兩個(gè)證書例子。本文在例子的原來基礎(chǔ)上加了些注釋。

1、DSA證書,CA證書

證書包含699字節(jié),證書版本號為3。

該證書包含以下內(nèi)容:
(a)?證書序列號是17 (0x11);
(b)?證書使用DSA和SHA-1哈希算法簽名;
(c)?證書發(fā)行者的名字是OU=nist; O=gov; C=US
(d)?證書主體的名字是OU=nist; O=gov; C=US
(e)?證書的有效期從1997-6-30到?1997-12-31;
(f)?證書包含一個(gè)1024 bit DSA?公鑰及其參數(shù)(三個(gè)整數(shù)p、q、g);
(g)?證書包含一個(gè)使用者密鑰標(biāo)識符(subjectKeyIdentifier)擴(kuò)展項(xiàng)
(h)?證書是一個(gè)CA證書(通過basicConstraints基本擴(kuò)展項(xiàng)標(biāo)識)

0000 30 82 02 b7?695: SEQUENCE??? // Certificate:: SEQUENCE類型(30),數(shù)據(jù)塊長度字節(jié)
為2(82),長度為695(02 b7) 0004 30 82 02 77?631: . SEQUENCE?// tbsCertificate:: SEQUENCE類型,長度631 0008 a0 03????????? 3: . . [0]???? // Version:: 特殊內(nèi)容-證書版本(a0),長度3 0010 02 01????????? 1: . . . INTEGER 2?//整數(shù)類型(02),長度1 ???????????????????? : 02?????????????? // 版本3(2) 0013 02 01????????? 1: . . INTEGER 17?? // serialNumber:: 整數(shù)類型(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??????????? // 以下紅色的數(shù)據(jù)塊表示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????????? // 以下紅色的數(shù)據(jù)塊表示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,三個(gè)整數(shù)
p、q、g 0168 02 81 80???? 128: . . . . . INTEGER?????? // p參數(shù) ???????????????????? : 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參數(shù) ???????????????????? : 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參數(shù) ???????????????????? : 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字節(jié)(好像應(yīng)該是131字節(jié)) 0455 02 81 80???? 128: . . . . INTEGER // 公鑰值,表現(xiàn)為integer類型,128字節(jié),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:: 特殊內(nèi)容-證書擴(kuò)展部分(a3),
長度50 0589 30 30???????? 48: . . . SEQUENCE 0591 30 0f????????? 9: . . . . SEQUENCE?? // 擴(kuò)展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?? // 擴(kuò)展 subjectKeyIdentifier 0610 06 03????????? 3: . . . . . OID 2.5.29.14: subjectKeyIdentifier ???????????????????? : 55 1d 0e 0615 04 16???????? 22: . . . . . OCTET STRING?//擴(kuò)展 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字節(jié) 0652 30 2c?????? ??44: . . SEQUENCE 0654 02 14???????? 20: . . . INTEGER?????? // 簽名值,20字節(jié),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字節(jié),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字節(jié),證書版本號為3。

該證書包含以下內(nèi)容:
(a)?證書序列號是256 (0x100);
(b)?證書使用RSA和MD2哈希算法簽名;
(c)?證書發(fā)行者的名字是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)?證書包含一個(gè)768 bit RSA?公鑰;
(g)?證書是一個(gè)非CA證書(通過一個(gè)基本擴(kuò)展項(xiàng)標(biāo)識)
(h)?證書包含證書主體別名、證書發(fā)行者別名–都是URLs
(i)?證書包含一個(gè)發(fā)行者密鑰標(biāo)識符和證書策略擴(kuò)展,和
(j)?證書包含一個(gè)密鑰用法的擴(kuò)展,指定用于數(shù)字簽名

? 0000 30 80?????????? : SEQUENCE?? (size undefined)?// Certificate:: SEQUENCE類型(30),數(shù)據(jù)塊長度不定,由00、00作為結(jié)束符 0002 30 82 02 40?576: . SEQUENCE??????? // tbsCertificate:: SEQUENCE類型,長度576 0006 a0 03????????? 3: . . [0]?????????? // Version:: 特殊內(nèi)容-證書版本(a0),長度3 0008 02 01????????? 1: . . . INTEGER 2?? //整數(shù)類型(02),長度1 ???????????????????? : 02??????????????? // 版本3(2) 0011 02 02????????? 2: . . INTEGER 256?? //serialNumber:: 整數(shù)類型(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?????????????? // 以下紅色的數(shù)據(jù)塊表示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????????????? // 以下紅色的數(shù)據(jù)塊表示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字節(jié) ????????? ???????????: 00?? (0 unused bits)???? 0321 03 68??????? 104: . . . . BIT STRING ?(0 unused bits) 0323 02 61???????? 97: . . . . . INTEGER (0 unused bits) // 公鑰值,96字節(jié),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:: 特殊內(nèi)容-證書擴(kuò)展部分(a3),
長度151 0431 30 3c???????? 60: . . . SEQUENCE 0433 30 1f???????? 31: . . . . SEQUENCE??????? // 擴(kuò)展發(fā)行者密鑰標(biāo)識符
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?????? // 擴(kuò)展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?????? //擴(kuò)展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?????? //擴(kuò)展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????? //擴(kuò)展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證書結(jié)構(gòu)簡介及實(shí)例

X.509第三版的證書結(jié)構(gòu)

總結(jié)

以上是生活随笔為你收集整理的X.509 数字证书结构和实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。