首页 高考 ASN.1解析X509证书

ASN.1解析X509证书

证书:=序列{

tbsCertificate TBSCertificate, — 证书主题

signatureAlgorithm AlgorithmIdentifier, — 证书签名算法标识符

SignatureValue BIT STRING –证书签名值是使用在signatureAlgorithm 部分中指定的签名算法对tbsCertificate 证书的主题部分进行签名后的值。

}

TBS 证书:=序列{

version [0] EXPLICIT Version DEFAULT v1, — 证书版本号

serialNumber CertificateSerialNumber, — 证书序列号。对于同一CA颁发的证书,序列号唯一标识该证书。

signature AlgorithmIdentifier, –证书签名算法标识符

颁发者名称,–证书颁发者名称

validity Validity, –证书有效期

主题名称,–证书主题名称

subjectPublicKeyInfo subjectPublicKeyInfo, –证书公钥

issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, — 证书颁发者ID(可选),仅在证书版本2 和3 中可用

subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, — 证书主题ID(可选),仅在证书版本2 和3 中可用

扩展[3] 显式扩展可选

— 证书扩展部分(可选),仅在证书版本3 中可用

}

在:

版本:=整数{ v1(0), v2(1), v3(2) }

算法标识符:=序列{

Algorithm OBJECT IDENTIFIER, — 证书主体持有的公钥密码算法

参数ANY DEFINED BY 算法OPTIONAL } — 参数ANY DEFINED BY 算法OPTIONAL 是可选的

ASN.1编码规则

基本编码规则(BER) [定义一种或多种使用ASN.1 语法将数据对象转换为二进制字节码的方法]

唯一编码规则(DER) [BER 的子集,定义使用ASN.1 将数据对象转换为二进制字节码的独特方法]

规范编码规则(CER)

压缩编码规则(PER)

XML编码规则(XER)

BER基本规则

BER是ASN.1定义的最早的编码规则。 BER 传输语法的格式始终为TLV 三元组

短格式长度=127

例子:

长度=35

将35 转换为十六进制为23

35的长度字段表示为:100011为[0010 0011]

长格式长度127

示例:

长度=169 转换为81 A9

(169的长度超过127,长度字段为1000 0001 1010 1001;

169是最后8位的值。前8 位的第一个1 指示这是一个长格式表示。前8位的后7位表示后面有多少字节。表示000 0001长度后面有一个字。section代表真实长度1010 1001代表长度169)

ASN.1解析X509证书

length=1500=82 05 DC(1000 0010 0000 0101 1101 1100,先看第一个字节,表示长格式,后面的2个字节表示长度,这两个字节是0000 0101 1101 1100表示1500)

context[][0] 表示证书的版本

[1] issueserUniqueID,表示证书颁发者的唯一id

[2] subjectUniqueID,表示证书主体的唯一id

[3] —表示证书的扩展字段

ASN1view分析证书

ASN.1 常见标记示例

0x02:Integer(整数,包括正数和负数)

0x03:位串(任何01位流)

0x04:OCTET字符串(任意字节流)

0x05:NULL(仅包含一个值NULL,用于传输报告或作为CHOICE类型中的某个值)

0x06:对象标识符

0x12:UTF8 字符串

0x13:可打印字符串

0x17:UTC时间(时间类型)

0x30:序列(序列类型)

0x31:设置(设置类型)

证书信息本身是一个SEQUENCE,它由两个SEQUENCE和一个BIT STRING组成。

其中,第一个SEQUENCE是要签名的证书,tbsCertificate=TO BE Signed Certificate;第二个SEQUENCE是签名算法,这是CA计划使用什么签名算法来签署tbsCertificate;第三个BIT STRING是签名信息,是CA通过signatureAlgorithm签名算法为tbsCertificate签出的签名信息。

其中,tbsCertificate还包含以下内容:

版本

version是ASN1 INTEGER类型(0x02),长度为1(0x1),数据为0x2,表示版本号为x509v3

SerialNumber 序列号也是ASN1 INTEGER类型,长度为5,数据为53ad44bcab,即359389248683(十进制转十进制)

AlgorithmIdentifier在www.oid-info.com上查询OID:1.2.840.113549.1.1.5的结果,代表

带有rsa 签名的sha1(5)

[其他标识符: sha1WithRSAEncryption、sha-1WithRSAEncryption]

即使用SHA1摘要算法的RSA签名算法

发行人由一个序列组成。数列下有N个集合,集合下有一个数列。其中一组代表一个字段,如下图,第一组代表CN;集合下的序列还包含一个OBject Identifier(缩写:OID),UTF8String

查询OID:2.5.4.3

通用名称(3)

[其他标识符: cn]

查看UTF8String 中的值:RSA_CA_SUB。

类推set即可得到完整的发行人。

评论:

有效期2049 之前的有效期以UTCTime 格式编码。时间2050 及更高版本必须使用GeneralizedTime 类型。两者之间的主要区别在于前者使用两个数字来表示年份。后者使用4位数字

UCTime:世界时间类型

GeneralizedTime:通用时间类型

UTC时间格式如下:

YYMMDDhhmmZ

YYMMDDhhmm+hh\’mm\’

YYMMDDhhmm-hh\’mm\’

ASN.1解析X509证书

YYMMDDhhmmssZ

YYMMDDhhmmss+hh\’mm\’

YYMMDDhhmmss-hh\’mm\’

在,

YY:当YY大于或等于50年时,年份应解释为19YY;当YY小于50时,年份应解释为20YY

MM:月份,01-12

DD:日,01-31

hh:小时,00-23

mm:分钟,00-59

ss:秒,00-59

Z/+/-:Z代表GMT时间,+/-代表当地时间与GMT时间的时差

hh\’:与GMT 的差异

mm\’:与GMT 的差异

那么:200827230643Z就是:

年份:20年

MM:八月

日:27日

hh: 23 点(23 点+ 8 点=7 点)

MM:06分

SS:43秒

主体名称与发行人Dn 相似

主体公钥信息证书的公钥信息中的BIT STRING是公钥的二进制

扩展扩展信息

OID 是如何计算的

对象标识符(OID) 是由“.”分隔的非负整数序列。我们来说说OID的编码设计:假设OID=V1.V2.V3.V4.V5.Vn,DER编码规则的值部分如下: (1)计算40*V1+V2作为第一个字节; (2)将Vi(i=3)表示为128位数字,将每128位数字视为一个字节,然后将除最后一个字节之外的所有字节的最高位置设置为1; (3)按顺序排列,得到数值部分。示例:OID=1.2.840.11359.1.1 的编码如下:

高位进1的含义是:

[0x010x1c] 将0x01 前进1

0的二进制为0000——–高位进位1—–1000—–转换为十六进制8

【0x4f0x55】

4的二进制形式为0100——–高位进位1——–1100——转换为十六进制为c

【0x060x770x0d】

0的二进制形式为0000——高位进位1—–1000—–转换为十六进制为8

7的二进制形式为0111———高位进位1—–1111—–转换为十六进制形式f

评论:

如何将十进制转换为十六进制

十六进制数:

十进制数:1 2 3 4 5 6 7 8 9

十六进制数:1 2 3 4 5 6 7 8 9

十进制数:10 11 12 13 14 15

十六进制数:A B C D E F

用户评论


揉乱头发

ASN.1解析X509证书,终于找到一个靠谱的解析方法了!

    有14位网友表示赞同!


爱你心口难开

解析X509证书,ASN.1工具太强大了,轻松搞定!

    有9位网友表示赞同!


淡抹烟熏妆丶

用ASN.1解析X509证书,简直是神器,效率提升了不少!

    有16位网友表示赞同!


玻璃渣子

没想到ASN.1解析X509证书这么简单,原来一直用错方法了。

    有17位网友表示赞同!


不相忘

ASN.1解析X509证书,学到了很多新东西,感觉打开了新世界的大门。

    有20位网友表示赞同!


猫腻

X509证书解析,ASN.1真香!

    有10位网友表示赞同!


剑已封鞘

这个ASN.1解析X509证书的教程太棒了,强烈推荐!

    有6位网友表示赞同!


淡抹丶悲伤

终于搞懂了ASN.1解析X509证书,感谢作者!

    有16位网友表示赞同!


你很爱吃凉皮

ASN.1解析X509证书,代码简洁易懂,学习起来很轻松。

    有9位网友表示赞同!


青衫负雪

以前一直不知道怎么解析X509证书,现在终于学会了,太方便了!

    有5位网友表示赞同!


孤城暮雨

ASN.1解析X509证书,这篇文章写得很好,内容丰富,讲解详细。

    有19位网友表示赞同!


陌上花

ASN.1解析X509证书,终于不用再为解析证书而烦恼了!

    有18位网友表示赞同!


青瓷清茶倾城歌

这篇文章真是太及时了,正需要学习ASN.1解析X509证书。

    有6位网友表示赞同!


雪花ミ飞舞

感谢作者分享ASN.1解析X509证书的经验,让我受益匪浅。

    有14位网友表示赞同!


仰望幸福

ASN.1解析X509证书,原来这么简单,以后可以自己动手解析了。

    有16位网友表示赞同!


我没有爱人i

ASN.1解析X509证书,学习了!

    有10位网友表示赞同!


烟雨离殇

感谢作者的分享,终于学会了ASN.1解析X509证书。

    有13位网友表示赞同!


无望的后半生

ASN.1解析X509证书,真是个好东西,强烈推荐!

    有11位网友表示赞同!


巷口酒肆

学习ASN.1解析X509证书,感觉打开了新世界的大门。

    有15位网友表示赞同!


你是梦遥不可及

ASN.1解析X509证书,原来这么简单!

    有8位网友表示赞同!