#由于网络上找不到开源的证书链验证工具,自行研究了手动验证数字证书链的方法#
众所周知,验证数字签名需要签名数据、签名值、公钥。我们知道使用者证书是由上级证书的私钥签发的,所以验证时就需要调用上级证书的公钥。
1.公钥:这里直接获取上级证书的公钥。04不要 留下剩下的数据,8a 8a aa 47 0d 2a 9a 33 d8 50 5f ba 49 68 16 23 52 73 0c 73 c6 3b 48 93 8d 26 b9 9b 43 2e 47 f4 01 f3 7c 8b 06 49 dc 71 9d d3 d6 ac 1d 82 fd bb 7b 7a aa 28 c7 40 dd 4d e2 a5 99 33 ea ac 55 93
2.签名数据:证书的签名数据是基本证书域的asn.1 DER编码
我们需要将证书解析为DER格式,可以看到证书和上图介绍的结构一致。
将基本证书域的所有数据全部复制出来,根据验签工具判断是否需要删除换行与空格。(我这里工具可以不删除空格,只需要把换行删除就行)
3.签名值:最后一步获取签名值,同样是ASN.1中的签名值域
由于这里有部分数据不需要,所以需要做ASN.1解析。
把获取到的数据放在工具中进行验证,得到验签通过。