数字证书编码

1. 对Extension进行DER编码

​ Extension为 SEQUENCE结构类型,不同扩展项DER编码值包含在OCTET STRING类型extn Value 中,编码规则采用结构类型定长模式。各扩展项DER编码值用括号分隔。其中,对于 BIT STRING类型,编码后第1个字节表示填充位数或未使用位数。

image-20210615174127579

2. 对TBSCertificate 进行DER编码

​ 序列号=1174(0x0496),证书签发者 DN="CN=Virtual CA,C=CN",证书持有者DN="CN=你的名字拼音, OU=Person,C=CN",证书有效期=20200222000000-20220222000000,参考表13-3进行更改。

image-20210615195432360

TBSCertificate标识符长度串内容串
version [0]
EXPLICIT
A0 03 02 01 02
serialNumber 02 02 04 96
signature 30 0D 06 09 2A 86 48 86 F7 0D 01 01 05 05 00
issuer 30 22 31 0B 30 09 06 03 55 04 06 13 02 43 4E 
31 13 30 11 06 03 55 04 03 13 0A 56 69 72 74 75 61 6C 20 43 41
validity 30 1E 17 0D 32 30 30 32 32 31 31 36 30 30 30 30 5A(2020) 
17 0D 32 32 30 32 32 31 31 36 30 30 30 30 5A(2022)
subjeet 30 32 31 0B 30 09 06 03 55 04 06 13 02 43 4E(CN)
31 0F 30 0D 06 03 55 04 0B 13 06 50 65 72 73 6F 6E(Person)
31 12 30 10 06 03 55 04 03 13 09 7A 68 75 79 6F 75 6D 69 6E(zhuyoumin)
subjectPublicKeylnfo 30 81 9F 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01
05 00 03 81 8D 00 30 81 89 02 81 81 00 B4 F6 CF 
18 3D 5E 8E 1D 46 7A 90 7D 8E 41 D2 E3 C8 F1 A3 
AE F3 6D 8A 24 FF 55 23 25 BD EB 0C D0 7B 87 36
5D 1F 73 98 65 3E 57 97 F6 65 7D 13 E0 E1 B5 FC 
BC 38 6F 56 3E 57 4E D6 51 1D 13 12 7C 33 B3 60 
31 79 32 07 97 F3 3C 8B 29 0D B5 78 38 93 CE 84 
E4 A3 DD FB F9 25 47 1C 72 A6 5E 78 02 CF F3 48
9D CA D9 00 73 DE 4B 16 07 52 48 20 06 F3 4F CA 
A5 2D 66 88 95 C6 6C D6 3F 61 34 F7 E3 02 03 01 
00 01
extensions[3]
EXPLICIT
A3 81 9F 30 81 9C 30 0C 06 03 55 1D 13 01
01 FF 04 02 30 00 30 1D 06 03 55 1D 0E 04 16 04 
14 2C 04 87 10 60 FC 61
F6 2B 64 81 3D FB 66 30 
DA F0 73 BC 08 30 0E 06 03 55 1D 0F 01 01 FF 04 
04 03 02 03 F8 30 29 06
03 55 1D 25 04 22 30 20 
06 08 2B 06 01 05 05 07 03 02 06 0A 2B 06 01 04 
01 82 37 14 02 02 06 08 2B 06 01 05 05 07 03 04
30 11 06 09 60 86 48 01 86 F8 42 01 01 04 04 03 
02 05 A0 30 1F 06 03 55 1D 23 04 18 30 16 80 14 
96 F0 94 F8 49 8D 23 05 86 B0 CA B5 2D 7A 9A 60 
32 FB B0 F9
TBSCertificate 30 82 01 D4 A0 03---0102:version
02 02---04 96:serialNumber
30 0D---05 00: signature
30 22---43 41: issuer
30 1E--30 5A: validity
30 32---61 6E: subject
30 81---00 01: subjectPublicKeyInfo
A3 81---BO F9:extensions

3. 对Certificate 进行DER编码

​ 对于标识串,采用低标识编码方式,只需1个字节。SEQUENCE的 tag 为0x10;class选择universal,则位8和位7为0,SEQUENCE为结构类型,则位6为1。因此,标识串=0x30。

​ 对于长度串,采用短型编码方式,只需1个字节。

​ 对于内容串,由AttributeType和 AttributeValue的 DER编码值组成。

Certificate标识符长度串内容串
tbsCertificatc 30 82 01 D4 A0 03---B0 F9
signatureAlgorithm 30 0d 06 09 2A 86 48 86 F7 0D 01 01 05 05 00
signaturevalue 30 82 01 01 00 8d 42---CC 81
Certificate 30 82 02 EC 30 82---B0 F9: tbsCertificatc
30 0D---05 00: signatureAlgorithm
03 82---CC 81: signatureVaiue

4. Name编码

最终编码为:

\xA0\x03\x02\x01\x02\x02\x02\x04\x96\x30\x0D\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x01\x05\x05\x00\x30\x22\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4E\x31\x13\x30\x11\x06\x03\x55\x04\x03\x13\x0A\x56\x69\x72\x74\x75\x61\x6C\x20\x43\x41\x30\x20\x17\x0E\x32\x30\x32\x30\x30\x32\x32\x32\x30\x30\x30\x30\x30\x30\x17\x0E\x32\x30\x32\x32\x30\x32\x32\x32\x30\x30\x30\x30\x30\x30\x30\x32\x31\x0B\x30\x09\x06\x03\x55\x04\x06\x13\x02\x43\x4E\x31\x0F\x30\x0D\x06\x03\x55\x04\x0B\x13\x06\x50\x65\x72\x73\x6F\x6E\x31\x12\x30\x10\x06\x03\x55\x04\x03\x13\x09\x7A\x68\x61\x6E\x67\x79\x61\x6F\x79\x75\x61\x6E


 

 

 
posted @ 2021-06-20 22:57  20181335ZYY  阅读(306)  评论(0编辑  收藏  举报