ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

协议通信中的asn1证书报文数据解析预研

2022-07-19 18:34:33  阅读:205  来源: 互联网

标签:tbsCertificate 证书 报文 SEQUENCE 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有