证书格式说明
packageinfo 返回的信息内容为整个的签名信息。
尾部信息:89 16 e6
头部信息:3082030D
总共785个字符信息
1211个字符在cert.rsa里面的
packageInfo.signatures 这里的签名信息就是用来计算签名的。
签名信息为byte数组类型,该类型的参数为字节数组的类型,共785个byte,这个byte数组中包括
公钥信息,
证书格式说明:
CertificateList ::= SEQUENCE { tbsCertList TBSCertList, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING }
证书的数据格式为
(注意:计算签名时候包括tag length和val三个参数)
ASN.1 DER encoding is a tag, length, value encoding system for each element.
以下数据为certificate:
证书的签名是对TBSCertificate这一块的数据进行签名的。
首先计算sha256(TBSCertificate),得出结果为
89 58 E6 88 F5 6F CF EC 74 45 DC E4 2C C9 C8 2B 18 45 9C BB CC 91 09 6B 72 2D 4A A5 3A CA 40 E6
共32个字节:
对证书里的
signatureValue用公钥进行解密后得到:
30 31 30 0D 06 09 60 86 48 01 65 03 04 02 01 05
00 04 20 89 58 E6 88 F5 6F CF EC 74 45 DC E4 2C
C9 C8 2B 18 45 9C BB CC 91 09 6B 72 2D 4A A5 3A
CA 40 E6
解析的为30 31(长度)+算法标识+sha256的结果
//证书扩展域信息
\x30 \x82 \x03 \x0d \x30 \x82 \x01 \xf5
\xa0 \x03 \x02 \x01 \x02 \x02 \x04 \x45
\x62 \xb9 \xc5 \x30 \x0d \x06 \x09 \x2a
\x86 \x48 \x86 \xf7 \x0d \x01 \x01 \x0b
\x05 \x00 \x30 \x37 \x31 \x0b \x30 \x09
\x06 \x03 \x55 \x04 \x06 \x13 \x02 \x55
\x53 \x31 \x10 \x30 \x0e \x06 \x03 \x55
\x04 \x0a \x13 \x07 \x41 \x6e \x64 \x72
\x6f \x69 \x64 \x31 \x16 \x30 \x14 \x06
\x03 \x55 \x04 \x03 \x13 \x0d \x41 \x6e
\x64 \x72 \x6f \x69 \x64 \x20 \x44 \x65
\x62 \x75 \x67 \x30 \x1e \x17 \x0d \x31
\x36 \x30 \x37 \x31 \x35 \x30 \x31 \x31
\x37 \x33 \x35 \x5a \x17 \x0d \x34 \x36
\x30 \x37 \x30 \x38 \x30 \x31 \x31 \x37
\x33 \x35 \x5a \x30 \x37 \x31 \x0b \x30
\x09 \x06 \x03 \x55 \x04 \x06 \x13 \x02
\x55 \x53 \x31 \x10 \x30 \x0e \x06 \x03
\x55 \x04 \x0a \x13 \x07 \x41 \x6e \x64
\x72 \x6f \x69 \x64 \x31 \x16 \x30 \x14
\x06 \x03 \x55 \x04 \x03 \x13 \x0d \x41
\x6e \x64 \x72 \x6f \x69 \x64 \x20 \x44
\x65 \x62 \x75 \x67 \x30 \x82 \x01 \x22
\x30 \x0d \x06 \x09 \x2a \x86 \x48 \x86
\xf7 \x0d \x01 \x01 \x01 \x05 \x00 \x03
\x82 \x01 \x0f \x00 \x30 \x82 \x01 \x0a
\x02 \x82 \x01 \x01 \x00 \xe5 \x31 \x34
\xe7 \xd2 \x52 \x15 \x63 \x9d \x8c \x49
\xc2 \xf8 \x10 \x02 \x60 \x80 \x75 \xb3
\xf5 \x46 \xa1 \x7b \xd5 \x4c \x33 \x71
\x5a \x9b \x34 \xe1 \x15 \x5f \xbb \x06
\xa9 \x8f \x18 \xc8 \x12 \xb0 \xfd \xc0
\xe9 \x8a \xd7 \x98 \xb1 \x45 \x38 \x11
\x31 \x34 \x6d \x2e \xf1 \x7b \x64 \xbb
\x4b \x4f \x28 \xd5 \xf9 \xe8 \x5a \x43
\x6b \xd2 \xd4 \xee \x83 \xdf \xd4 \xdb
\x50 \x76 \xb9 \xb0 \x72 \x39 \x1e \x87
\x25 \x92 \xce \xb8 \xe4 \xbe \x54 \x69
\x23 \x72 \x0c \xc1 \xf6 \x42 \x5d \xca
\xc4 \x30 \x3d \xf8 \x7a \x6a \x36 \xfd
\xf0 \x1d \x6a \xa8 \xc9 \x91 \xc2 \x3c
\x33 \xf8 \x8b \x6e \xf3 \x7d \x33 \x9d
\x16 \xef \xbc \x0a \xce \x0f \xbc \xf7
\x4f \x25 \x09 \xdb \xf6 \xd8 \xd6 \x98
\xd8 \xc4 \xaa \xba \x04 \x6d \x93 \x0a
\xa9 \x03 \xb4 \x68 \xd2 \x11 \xca \x9c
\x7a \xf8 \x39 \x7a \x58 \xbd \x69 \x26
\xb7 \x59 \x10 \x80 \x00 \xa4 \x36 \x59
\xa9 \x24 \x9b \xf7 \xa2 \x0b \x38 \x22
\x7e \x6d \x12 \x82 \xfa \x32 \xfc \x28
\xb6 \x9d \xd2 \xd9 \x9c \x74 \x85 \x68
\x96 \xd0 \x4e \x2d \xe8 \x71 \x4a \xc1
\x34 \xa0 \xfd \xce \xc2 \x02 \x85 \xa3
\x37 \x64 \x50 \x8a \xee \x73 \xfc \xc2
\x37 \x03 \x14 \xa0 \x9c \xe3 \x1f \xa2
\x9f \xef \xa7 \x6b \x13 \x9e \x52 \x7d
\x3f \xbf \x35 \xe4 \xdf \xc0 \xdc \x33
\x62 \xd9 \x3f \x99 \x8d \xbd \x13 \x47
\x77 \xad \x0f \xfd \xa3 \x02 \x03 \x01
\x00 \x01 \xa3 \x21 \x30 \x1f \x30 \x1d
\x06 \x03 \x55 \x1d \x0e \x04 \x16 \x04
\x14 \xfb \xcc \x6c \x9b \xc6 \x61 \xcd
\x03 \x25 \xcc \x70 \x82 \x57 \xb0 \xf5
\xc2 \xf2 \x1b \x3d \xa1
//证书算法标识
\x30 \x0d \x06 \x09 \x2a \x86 \x48 \x86 \xf7 \x0d \x01 \x01 \x0b \x05 \x00
//证书签名数据
\x03 \x82 \x01 \x01
\x00 \x7a \x72 \x29 \x25 \xd4 \x29 \xcb
\x30 \xc1 \x23 \xea \x70 \x34 \x1a \x88
\x7b \xc2 \xe8 \x70 \xfa \x8a \x56 \x26
\x58 \x10 \x2a \xba \x71 \x93 \x72 \x15
\x9d \xef \xa9 \x41 \x26 \x8c \xec \x63
\x35 \x8b \x45 \x6e \x4f \x80 \x56 \x95
\x02 \x9b \xb3 \x39 \xf4 \x7a \xf8 \x3b
\x68 \xb9 \x9e \x54 \x53 \x75 \x96 \xd5
\x32 \x31 \xf2 \x55 \xd3 \x40 \x18 \xfb
\x6a \x35 \x34 \x1e \x3d \x41 \x7e \x32
\xd3 \xd6 \x51 \x7d \x83 \x6f \x9a \xda
\x6a \xe2 \x6e \xec \x78 \xf8 \xd2 \x66
\x6e \xa6 \xff \x5d \x96 \x19 \xdc \x95
\x8f \x60 \x98 \xa5 \x49 \xdd \x94 \x43
\x15 \x46 \x5d \xae \x8e \xdf \x2a \xc2
\x05 \xe6 \x65 \x98 \x47 \x30 \x01 \xa1
\x74 \x5f \x57 \x6a \x5a \x5f \x0c \x78
\x15 \xd2 \x12 \x2a \x5e \xa6 \xd9 \x94
\x99 \xde \x36 \x7b \xe2 \x1d \x3b \xad
\xb4 \xc1 \xc1 \x46 \x0d \x88 \xea \x0b
\x7c \xcb \x37 \x04 \xf3 \x36 \xbb \xe1
\x6c \x91 \xab \x5d \x02 \x87 \x6c \xef
\x31 \x44 \xd7 \xa5 \xe8 \xf6 \x1c \x7e
\x9f \x5d \x8f \xfc \xa4 \x25 \xb2 \x7a
\xc9 \x3f \xf0 \xac \x83 \x5a \xff \x93
\x0d \xb7 \xa7 \x55 \x0e \xca \xaf \x84
\xd1 \x3e \x17 \x0d \x42 \x44 \x26 \x29
\x7f \xbe \xe0 \x30 \x24 \xba \x47 \x1a
\x8c \x40 \x59 \x50 \xb3 \x95 \xf8 \xa5
\x91 \x3d \xa4 \x24 \x2e \xd6 \x5b \x68
\xab \x58 \x17 \xe7 \xe3 \xa1 \x6d \xf4
\x81 \xce \xb2 \xde \x4a \xcf \x89 \x16
\xe6
证书链校验方式:安卓证书的校验方式,检验根证书,所以握手时候需要传输所有的中间证书
公钥证书格式说明
pcks#7格式证书
30 820122(290)
30 0D
06 09 2A864886F70D010101
05 00
03 82010F(271) 003082010A0282010100AF240808297A359E600CAAE74B3B4EDC7CBC3C45...
直接用公钥和私钥进行保存证书:
3082010A0282010100AF240808297A359E600CAAE74B3B4EDC7CBC3C45...
上述的证书中无算法标识,所以证书的格式不准确