协议通信中的asn1证书报文数据解析预研
作者:互联网
1.首先准备ASN.1的查看工具,本例采用的是Asn1View.exe,需要自行下载。该工具可以查看base64编码后的文件,比如我们常用的x.509数字证书,p7b证书链,p12证书,pfx个人交换证书,p10证书请求文件,当然,这个工具也可以查看通讯上的asn1编码的数据,比如ldap协议通信中的asn1数据,snmp中的asn1编码的数据等。
然后获取一张证书,获取证书的途径很多,这里不再叙述,给个最简单的方法,访问https://www.alipay.com,获取站点证书,由于我们只分析证书,不分析私钥信息。所以站点证书完全可以。下图是通过google chrome,查看证书的例子。
点击证书信息,得到cer扩展名的证书
通过工具asn1view工具打开我们刚才导出的证书文件
在看之前,我们先把ASN1常用的类型标识符列出来。下面解释的时候会用到
先看第一个SEQUENCE,展开是两个SEQUENCE和一个BITSTRING
根据RFC3280对证书的解释如下:
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate, 1证书
signatureAlgorithm AlgorithmIdentifier, 2签名算法
signature BIT STRING 3签名
}
证书信息本身是一个SEQUENCE,里面由两个SEQUENCE和一个BIT STRING组成
第一个SEQUENCE是待签的证书,tbsCertificate=TO BE Signed Certificate
第二个SEQUENCE是签名算法,就是CA准备采用什么签名算法对tbsCertificate进行签名
第三个 BIT STRING是签名信息,就是CA对tbsCertificate通过signatureAlgorithm签名算法签出来的签名信息。
接下来我们在看看tbsCertificate,展开
我们在看看RFC3280对TBSCertificate 的定义
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,版本
serialNumber CertificateSerialNumber, 序列号
signature AlgorithmIdentifier, 签名算法
issuer Name, 颁发者
validity Validity, 有效期
subject Name, 主题
subjectPublicKeyInfo SubjectPublicKeyInfo, 主题公钥信息
issuerUniqueID[1] IMPLICIT UniqueIdentifier OPTIONAL, 颁发者唯一ID
-- If present, version shall be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,主题唯一ID
-- If present, version shall be v2 or v3
extensions [3] EXPLICIT Extensions OPTIONAL 扩展
-- If present, version shall be v3
}
- Version
第一个Context[0]里面就是证书版本信息了,默认是V1
先看看一下Version的定义
Version ::= INTEGER { v1(0),v2(1),v3(2)
再看一下ASN1View右面的16进制显示
asn1view右下角已经帮我们解释了
02表示INTEGER类型
01表示长度
02是值表示V3版本
以此类推
算法标识参考GM_T 0006-2012密码应用标识规范.pdf
证书格式参考 GBT 20518-2018信息安全技术_公钥基础设施_数字证书格式.pdf
标签:tbsCertificate,证书,报文,SEQUENCE,asn1,算法,签名,预研 来源: https://www.cnblogs.com/mengjianning/p/16495215.html