已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通过ASN.1解析来认识数字证书1、 准备工作 首先准备ASN.1的查看工具,本例采用的是Asn1View.exe,需要自行下载。该工具可以查看base64编码后的文件,比如我们常用的x.509数字证书,p7b证书链,p12证书,pfx个人交换证书,p10证书请求文件,当然,这个工具也可以查看通讯上的asn1编码的数据,比如ldap协议通信中的asn1数据,snmp中的asn1编码的数据等。然后获取一张证书,获取证书的途径很多,这里不再叙述,给个最简单的方法,访问,获取站点证书,由于我们只分析证书,不分析私钥信息。所以站点证书完全可以。下图是通过google chrome,查看证书的例子。点击证书信息,得到证书选择tab栏中的“详细信息”后,选择“复制到文件”。然后一直选择下一步,选择生成文件(最好选择.cer扩展名结尾),到完成 通过以上步骤,完成证书的获取。OK,工具和证书文件都有了,我们接下来通过ASN1来看看证书的详细信息。2、证书ASN.1解析通过工具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, 主题公钥信息 issuerUniqueID1 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 1) Version第一个Context0里面就是证书版本信息了,默认是V1先看看一下Version的定义 Version := INTEGER v1(0),v2(1),v3(2) 再看一下ASN1View右面的16进制显示asn1view右下角已经帮我们解释了绿色的02表示INTEGER类型蓝色的01表示长度黄色的02是值表示V3版本2) serialNumber表示证书的唯一标识序列号,它的RFC3280定义如下CertificateSerialNumber := INTEGER右侧的16进制02 10 70 81 52 bb 70 0e 62 e9 ed 22 27 e6 d6 b3 02 d0表示分别是02表示INTEGER类型,10是16进制表示的长度10进制就是16,70 81 52 bb 70 0e 62 e9 ed 22 27 e6 d6 b3 02 d0表示值同样在右下角也有解释。3)sign AlgorithmIdentifier表示签名算法,它的RFC3280定义如下AlgorithmIdentifier := SEQUENCE algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL algorithm OBJECT IDENTIFIER,被用来表示一个加密算法parameters ANY DEFINED BY algorithm OPTIONAL,该参数被一些算法定义,是一个可选项,我们本次用到的支付宝的这张VeriSign站点证书就是NULLASN1View右下角解释了该张证书的算法标识,是SHA1WithRSA的算法大家会发现一个问题,就是算法长度是09,而算法OID问什么会是1.2.840.1135,明显超过了9个长度,而且86 48 86 f7 0d 01 01 05也和这个OID没有任何关系。这是因为OID是有一套自己的标码规则的,配合着下面的例子大概说一下,就明白了以上面的OID为例: 1.2.840.1135编码过程:ISO规定前两级格式为:第一级 * 40 + 第二级,即为 1*40 + 2 = 42,十六进制为 2A.第三级是840840=6*128+72将6,72以big-endian高位加1,也就是加128将6+128=134转换成16进制就是8672转换成16进制就是48所以第四位的16进制表示就是86 48第四级113549113549=6*1282+119*128+136,119,13以big-endian高位加1,也就是加128变成134,247,13对应的16进制分别是86,F7,07后面的小于128的直接转换1.1.501 01 05最后得到的16进制就是 2A 86 48 D8 5F 01 01 054) issuer这部分内容比较多,需要多关注一下:首先先看一下Issuer Name的定义Name := CHOICE RDNSequence RDNSequence := SEQUENCE OF RelativeDistinguishedNameRelativeDistinguishedName :=SET OF AttributeTypeAndValueAttributeTypeAndValue := SEQUENCE type AttributeType,value AttributeValue AttributeType := OBJECT IDENTIFIERAttributeValue := ANY DEFINED BY AttributeTypeDirectoryString := CHOICE teletexString TeletexString (SIZE (1.MAX),printableString PrintableString (SIZE (1.MAX),universalString UniversalString (SIZE (1.MAX),utf8String UTF8String (SIZE (1.MAX),bmpString BMPString (SIZE (1.MAX) Issuer域定义了签名和发布该证书的实体,也就是签发该证书的证书(用户证书签发证书)实体信息,该域必须包含一个非空DN,issuer 域按照X.501的类型名来规定,Name被定义成ASN.1如下结构:The issuer field identifies the entity who has signed and issued the certificate. The issuer field MUST contain a non-empty distinguished name (DN). The issuer field is defined as the X.501 type Name X.501. Name is defined by the following ASN.1 structures:Name描述如国家名一类的属性和相应值的体系名称。Attribute决定构成体AttributeValue的类型:通常情况下,它将是一个DirectoryString。 按对PrintableString、TeletexString、BMPString、UTF8String和UniversalString的选择来规定DirectoryString类型。UTF8String编码是优选编码,并且2003年12月31日之后签发的所有证书必须使用DirectoryString(除下面所说明的之外)UTF8String编码。到那时为止,在生成区分名(包括它们自身的名称)时,合格的CA必须从下面的选项中选择: (a)若字符集是足够的,可以用PrintableString表示串; (b)舍弃(a),若BMPString字符集是足够的可以用BMPString表示串; (c)舍弃(a)和(b)必须用UTF8String表示串。若满足(a)或(b),CA仍然可以选择使用UTF8String表示串。 UTF8编码还要求如下: (a) CA可以签发“name rollover”证书来支持依次地转换到UTF8String编码。这类证书将包括以CA的UTF8String编码名作为签发者同时旧的编码作为持有者或反之。 (b)如上面所述,持有者字段必须使用一对应于持有者CA签发的所有证书的签发者字段内容非空的区分名来填充,而不考虑使用何种编码。为向后兼容,包括TeletexString和OniversalString但不应用于证书的新持有者。然而,在先前已经建立的名字处可以使用这些类型。证书的使用者应准备接收具有这些类型的证书。除此之外,许多传统的实施支持使用IS0 8859-l字符集编码(拉丁串)的名称,但使用TeletexString.来标识。拉丁串包括不是TeletexString字符集的在西欧使用的字符。处理TeletexString的实施应能处理整个IS0 8859-1字符集。如上所述,区分名由属性组成。合格的实施必须准备接收包含下面规定的属性类型集的签发者名的证书。 ITU-T X.520中规定属性的标准集。使用本标准的实施必须准备接收签发者名称中的下列标准属性类型:国家、组织、组织单元、区分名限定词、省名和通用名。除此之外, 使用本标准的实施还应准备接收签发者在名称中的下列标准属性类型:地点、称呼、姓、名、名字缩写和生成限定词。此外,本标准的实施必须准备接收域构成体属性,如RFC2247中规定的。域(名服务器)系统( DNS)提供体系源标记系统。该属性为希望使用并列于DNS名的DN的组织提供方便机制。证书使用者必须准备处理签发者区分名和持有者区分名字段以将证书路径确认名链接,将一个证书中的签发者区分名匹配到CA证书。本部分仅需要X500系列规范中规定的名称比较的一个子集。对合格的实施的要求如下: (a)不同类型编码(例如PrintableString和BMPString)的属性值可以假定表示不同的串; (b)不以PrintableString类型表示的属性值是大小写敏感的(允许属性值作为二进制客体匹配); (c)以PrintableString表示的属性值不是大小写敏感的(例如,“Marianne Swanson”与“MARIANNE SWANSON”是一致的); (d)在移去头和尾部白色空白并且将一个或多个内部连续空白字符子串转换到一个单一空白之后,以PrintableString表示的属性值是可比较的。这些名称比较规则允许一个证书用户验证使用证书用户不熟悉的编码语言签发的证书。 除此之外,根据本部分,还可以使用这些比较规则来处理对名称链接不熟悉的属性类型,允许实施处理使用签发者名称中不熟悉属性的证书。注意:X.500系列规范中规定的比较规则指示用于编码区分名中的数据的字符集是不相关的。不考虑相关的编码,字符本身是比较的5) 有效期( validity)证书有效期是CA保证它将保留有关该证书状态信息的时间间隔。它用两个日期的SEQUENCE来表示。第一个日期是该证书有效期的开始时间(notBefore)第二个则是其结束时间(notAfter)。这两个时间(notBefore和notAfter)可以用UTCTime或GeneralizedTime来编码。 2049年以前的有效期用UTCTime格式编码2050及之后的时间必须使用GeneralizedTime类型。这两种的主要区别在于前者用两个数字来表示年而后者用4个数字。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 试论王维诗歌的-空-字
- 毕业论文的相关格式要求
- 毕业论文答辩指导教师评语(共五则范文)
- 毕业论文(设计)写作格式要求-论文格式-
- 北京外国语大学硕士论文格式
- 煤矿经营管理工作总结工作打算6
- 国家开放大学电大土木工程本科毕业论文浅析建筑工程施工组织设计
- 工程合同书样本打印(3篇)
- 供应链管理在建筑企业物流中的应用研究
- 丰田“五问”分析法
- 幼儿园讲故事小鸭子找朋友
- ZZ029-养老照护赛项赛题(10套)-2023年全国职业院校技能大赛拟设赛项赛题(10套)
- 实验安全你我他智慧树知到答案章节测试2023年内蒙古农业大学
- 眼眶病眼眶肿瘤七制讲课4
- 2023年陕西领导干部任前廉政考试题库
- 2023年全国中学生英语能力竞赛NEPCS高一组决赛含答案和听力
- GB/T 34940.2-2017静态切换系统(STS)第2部分:电磁兼容性(EMC)要求
- GB/T 21198.4-2007贵金属合金首饰中贵金属含量的测定ICP光谱法第4部分:999‰贵金属合金首饰贵金属含量的测定差减法
- 2022年新整理《研究生中国特色社会主义理论与实践研究》考题附答案
- GA/T 1068-2015刑事案件命名规则
- 第六章分子的结构与性质
评论
0/150
提交评论