X.509 证书的结构是用 ASN1(Abstract Syntax Notation One)进行描述数据结构,并使用ASN1语法进行编码。
ASN1 采用一个个的数据块来描述整个数据结构,每个数据块都有四个部分组成:
数据类型包括简单类型和结构类型。
简单类型是不能再分解类型,如整型(INTERGER)、比特串(BIT STRING)、字节串(OCTET STRING)、对象标示符(OBJECT IDENTIFIER)、日期型(UTCTime)等。
结构类型是由简单类型和结构类型组合而成的,如顺序类型(SEQUENCE, SEQUENCE OF)、选择类型(CHOICE)、集合类型(SET)等。
这个标识字节的结构如下:
用来标示 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 的值表示特殊内容:
表示是否为结构类型(1位结构类型);0则表明编码类型是简单类型。
是类型的 TAG 值。根据 bit8-bit7 的不同值有不同的含义,具体含义见上面的描述。
如 SEQUENCE 类型数据块,其TAG类型位UNIVERSAL(00),属于结构类型(1),TAG值为16(10000)所以其类型标示字段值为(00110000),即为0x30。
再如,证书扩展字段类型的数据块,TAG类型为(10),属结构类型(1),TAG的值为3(00011),所以其类型标示字段值为(10100011),即为0xA3。
长度字段,有两种编码格式。
若长度值小于等于127,则用一个字节表示,bit8 = 0, bit7 - bit1 存放长度值;
若长度值大于127,则用多个字节表示,可以有2到127个字节。第一个字节的第8位为1,其它低7位给出后面该域使用的字节的数量,从该域第二个字节开始给出数据的长度,高位优先。
还有一种特殊情况,这个字节为 0x80,表示数据块长度不定,由数据块结束标识结束数据块。
存放数据块的值,具体编码随数据块类型不同而不同。
结束标示字段,两个字节(0x0000),只有在长度值为不定时才会出现。
标识证书的版本(版本1、版本2或是版本3)。
标识证书的唯一整数,由证书颁发者分配的本证书的唯一标识符。
用于签证书的算法标识,由对象标识符加上相关的参数组成,用于说明本证书所用的数字签名算法。例如,SHA-1和RSA的对象标识符就用来说明该数字签名是利用RSA对SHA-1杂凑加密。
证书颁发者的可识别名(DN)。
证书有效期的时间段。本字段由 Not Before 和 Not After 两项组成,它们分别由 UTC 时间或一般的时间表示(在RFC2459中有详细的时间表示规则)。
证书拥有者的可识别名,这个字段必须是非空的,除非你在证书扩展中有别名。
主体的公钥(以及算法标识符)。
标识符—证书颁发者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。
证书拥有者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。
可选的标准和专用的扩展(仅在版本2和版本3中使用),扩展部分的元素都有这样的结构:
- Extension ::= SEQUENCE {
- extnID OBJECT IDENTIFIER,
- critical BOOLEAN DEFAULT FALSE,
- extnValue OCTET STRING
- }
extnID:表示一个扩展元素的OID
critical:表示这个扩展元素是否极重要
extnValue:表示这个扩展元素的值,字符串类型。
扩展部分包括:
证书所含密钥的唯一标识符,用来区分同一证书拥有者的多对密钥。
一个比特串,指明(限定)证书的公钥可以完成的功能或服务,如:证书签名、数据加密等。
如果某一证书将 KeyUsage 扩展标记为“极重要”,而且设置为“keyCertSign”,则在 SSL 通信期间该证书出现时将被拒绝,因为该证书扩展表示相关私钥应只用于签写证书,而不应该用于 SSL。
指明CRL的分布地点。
指明证书中与公钥相联系的私钥的使用期限,它也有Not Before和Not After组成。若此项不存在时,公私钥的使用期是一样的。
由对象标识符和限定符组成,这些对象标识符说明证书的颁发和使用策略有关。
表明两个CA域之间的一个或多个策略对象标识符的等价关系,仅在CA证书里存在。
指出证书拥有者的别名,如电子邮件地址、IP地址等,别名是和DN绑定在一起的。
指出证书颁发者的别名,如电子邮件地址、IP地址等,但颁发者的DN必须出现在证书的颁发者字段。
指出证书拥有者的一系列属性。可以使用这一项来传递访问控制信息。
- Certificate ::= SEQUENCE {
- tbsCertificate TBSCertificate, -- 证书主体
- signatureAlgorithmAlgorithmIdentifier, -- 证书签名算法标识
- signatureValue BIT STRING --证书签名值,是使用signatureAlgorithm部分指定的签名算法对tbsCertificate证书主题部分签名后的值.
- }
- TBSCertificate ::= SEQUENCE {
- version [0] EXPLICIT Version DEFAULT v1, -- 证书版本号
- serialNumber CertificateSerialNumber, -- 证书序列号,对同一CA所颁发的证书,序列号唯一标识证书
- signature AlgorithmIdentifier, --证书签名算法标识
- issuer Name, --证书发行者名称
- validityValidity, --证书有效期
- 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算法没有此参数
- pINTEGER,
- qINTEGER,
- gINTEGER
- }
-
- 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 {
- utcTimeUTCTime,
- 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,
- extnValueOCTET STRING
- }
这是从 RFC 2459 Internet X.509 Public Key Infrastructure 标准文档中摘取的两个证书例子。本文在例子的原来基础上加了些注释。
证书包含 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
证书包含 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 表示的算法