1. 程式人生 > 其它 >數字證書編碼

數字證書編碼

數字證書編碼

目錄

1. 對Extension進行DER編碼

​ Extension為 SEQUENCE結構型別,不同擴充套件項DER編碼值包含在OCTET STRING型別extn Value 中,編碼規則採用結構型別定長模式。各擴充套件項DER編碼值用括號分隔。其中,對於 BIT STRING型別,編碼後第1個位元組表示填充位數或未使用位數。

2. 對TBSCertificate 進行DER編碼

​ 序列號=1174(0x0496),證書籤發者 DN="CN=Virtual CA,C=CN",證書持有者DN="CN=你的名字拼音, OU=Person,C=CN",證書有效期=20200222000000-20220222000000,參考表13-3進行更改。

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\x75\x79\x6F\x75\x6D\x69\x6E

5 Openssl驗證