X509数字证书结构和实例.docx

上传人:b****3 文档编号:10346126 上传时间:2023-05-25 格式:DOCX 页数:25 大小:25.83KB
下载 相关 举报
X509数字证书结构和实例.docx_第1页
第1页 / 共25页
X509数字证书结构和实例.docx_第2页
第2页 / 共25页
X509数字证书结构和实例.docx_第3页
第3页 / 共25页
X509数字证书结构和实例.docx_第4页
第4页 / 共25页
X509数字证书结构和实例.docx_第5页
第5页 / 共25页
X509数字证书结构和实例.docx_第6页
第6页 / 共25页
X509数字证书结构和实例.docx_第7页
第7页 / 共25页
X509数字证书结构和实例.docx_第8页
第8页 / 共25页
X509数字证书结构和实例.docx_第9页
第9页 / 共25页
X509数字证书结构和实例.docx_第10页
第10页 / 共25页
X509数字证书结构和实例.docx_第11页
第11页 / 共25页
X509数字证书结构和实例.docx_第12页
第12页 / 共25页
X509数字证书结构和实例.docx_第13页
第13页 / 共25页
X509数字证书结构和实例.docx_第14页
第14页 / 共25页
X509数字证书结构和实例.docx_第15页
第15页 / 共25页
X509数字证书结构和实例.docx_第16页
第16页 / 共25页
X509数字证书结构和实例.docx_第17页
第17页 / 共25页
X509数字证书结构和实例.docx_第18页
第18页 / 共25页
X509数字证书结构和实例.docx_第19页
第19页 / 共25页
X509数字证书结构和实例.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

X509数字证书结构和实例.docx

《X509数字证书结构和实例.docx》由会员分享,可在线阅读,更多相关《X509数字证书结构和实例.docx(25页珍藏版)》请在冰点文库上搜索。

X509数字证书结构和实例.docx

X509数字证书结构和实例

X.509数字证书结构和实例

一、 X.509数字证书的编码

X.509证书的结构是用ASN1(AbstractSyntaxNotationOne)进行描述数据结构,并使用ASN1语法进行编码。

ASN1采用一个个的数据块来描述整个数据结构,每个数据块都有四个部分组成:

1、数据块数据类型标识(一个字节)

数据类型包括简单类型和结构类型。

●简单类型是不能再分解类型,如整型(INTERGER)、比特串(BITSTRING)、字节串(OCTETSTRING)、对象标示符(OBJECTIDENTIFIER)、日期型(UTCTime)等。

●结构类型是由简单类型和结构类型组合而成的,如顺序类型(SEQUENCE,SEQUENCEOF)、选择类型(CHOICE)、集合类型(SET)等。

⏹顺序类型的数据块值由按给定顺序成员成员数据块值按照顺序组成;

⏹选择类型的数据块值由多个成员数据数据块类型中选择一个的数据块值;

⏹集合数据块类型由成员数据块类型的一个或多个值构成。

这个标识字节的结构如下:

1.1.Bit8-bit7用来标示TAG类型,共有四种,分别是universal(00)、application(01)、context-specific(10)和private(11)。

1.2.Bit6表示是否为结构类型(1位结构类型);0则表明编码类型是简单类型。

1.3.Bit5-bit1是类型的TAG值。

根据bit8-bit7的不同值有不同的含义,具体含义见下表。

当Bit8-bit7为universal(00)时,bit5-bit1的值表示不同的universal的值:

标记(TAG)

对应类型

备注

[UNIVERSAL1]

BOOLEAN

[有两个值:

false或true]

[UNIVERSAL2]

INTEGER

[整型值]

[UNIVERSAL3]

BITSTRING

[0位或多位]

[UNIVERSAL4]

OCTETSTRING

[0字节或多字节]

[UNIVERSAL5]

NULL

[UNIVERSAL6]

OBJECTIDENTIFIER

[相应于一个对象的独特标识数字]

[UNIVERSAL7]

OBJECTDESCRIPTOR

 [一个对象的简称]

[UNIVERSAL8]

EXTERNAL,INSTANCEOF

[ASN.1没有定义的数据类型]

[UNIVERSAL9]

REAL

[实数值]

[UNIVERSAL10]

ENUMERATED

[数值列表,这些数据每个都有独特的标识符,作为ASN.1定义数据类型的一部分]

[UNIVERSAL12]

UTF8String

[UNIVERSAL13]

RELATIVE-OID

[UNIVERSAL16]

SEQUENCE,SEQUENCEOF

[有序数列,SEQUENCE里面的每个数值都可以是不同类型的,而SEQUENCEOF里是0个或多个类型相同的数据]

[UNIVERSAL17]

SET,SETOF

[无序数列,SET里面的每个数值都可以是不同类型的,而SETOF里是0个或多个类型相同的数据]

[UNIVERSAL18]

NumericString

[0-9以及空格]

[UNIVERSAL19]

PrintableString

[A-Z、a-z、0-9、空格以及符号'()+,-./:

=?

]

[UNIVERSAL20]

TeletexString,T61String

[UNIVERSAL21]

VideotexString

[UNIVERSAL22]

IA5String

[UNIVERSAL23]

UTCTime

[统一全球时间格式]

[UNIVERSAL24]

GeneralizedTime

[UNIVERSAL25]

GraphicString

[UNIVERSAL26]

VisibleString,ISO646String

[UNIVERSAL27]

GeneralString

[UNIVERSAL28]

UniversalString

[UNIVERSAL29]

CHARACTERSTRING

[UNIVERSAL30]

BMPString

[UNIVERSAL31]

reservedforfutureuse

当Bit8-bit7为context-specific(10)时,bit5-bit1的值表示特殊内容:

[0]–-表示证书的版本

[1]–-issuerUniqueID,表示证书发行者的唯一id

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

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

如SEQUENCE类型数据块,其TAG类型位UNIVERSAL(00),属于结构类型

(1),TAG值为16(10000)所以其类型标示字段值为(00110000),即为0x30。

再如,证书扩展字段类型的数据块,TAG类型为(10),属结构类型

(1),TAG的值为3(00011),所以其类型标示字段值为(10100011),即为0xA3。

2、数据块长度(1-128个字节)

长度字段,有两种编码格式。

●若长度值小于等于127,则用一个字节表示,bit8=0,bit7-bit1存放长度值;

●若长度值大于127,则用多个字节表示,可以有2到127个字节。

第一个字节的第8位为1,其它低7位给出后面该域使用的字节的数量,从该域第二个字节开始给出数据的长度,高位优先。

●还有一种特殊情况,这个字节为0x80,表示数据块长度不定,由数据块结束标识结束数据块。

3、数据块的值

存放数据块的值,具体编码随数据块类型不同而不同。

4、数据块结束标识(可选)

结束标示字段,两个字节(0x0000),只有在长度值为不定时才会出现。

二、 X.509证书的结构

1、X.509证书基本部分

1.1.       版本号.

标识证书的版本(版本1、版本2或是版本3)。

1.2.       序列号

标识证书的唯一整数,由证书颁发者分配的本证书的唯一标识符。

1.3.       签名

用于签证书的算法标识,由对象标识符加上相关的参数组成,用于说明本证书所用的数字签名算法。

例如,SHA-1和RSA的对象标识符就用来说明该数字签名是利用RSA对SHA-1杂凑加密。

1.4.       颁发者

证书颁发者的可识别名(DN)。

1.5.       有效期

证书有效期的时间段。

本字段由”NotBefore”和”NotAfter”两项组成,它们分别由UTC时间或一般的时间表示(在RFC2459中有详细的时间表示规则)。

1.6.       主体

证书拥有者的可识别名,这个字段必须是非空的,除非你在证书扩展中有别名。

1.7.       主体公钥信息

主体的公钥(以及算法标识符)。

1.8.       颁发者唯一标识符

标识符—证书颁发者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。

1.9.       主体唯一标识符

证书拥有者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。

2、X.509证书扩展部分

可选的标准和专用的扩展(仅在版本2和版本3中使用),扩展部分的元素都有这样的结构:

  Extension :

:

= SEQUENCE {

       extnID     OBJECTIDENTIFIER,

       critical   BOOLEANDEFAULTFALSE,

       extnValue  OCTETSTRING }

extnID:

表示一个扩展元素的OID

critical:

表示这个扩展元素是否极重要

extnValue:

表示这个扩展元素的值,字符串类型。

扩展部分包括:

2.1.       发行者密钥标识符

证书所含密钥的唯一标识符,用来区分同一证书拥有者的多对密钥。

2.2.       密钥使用

一个比特串,指明(限定)证书的公钥可以完成的功能或服务,如:

证书签名、数据加密等。

如果某一证书将KeyUsage扩展标记为“极重要”,而且设置为“keyCertSign”,则在SSL通信期间该证书出现时将被拒绝,因为该证书扩展表示相关私钥应只用于签写证书,而不应该用于SSL。

2.3.       CRL分布点

指明CRL的分布地点。

2.4.       私钥的使用期

指明证书中与公钥相联系的私钥的使用期限,它也有NotBefore和NotAfter组成。

若此项不存在时,公私钥的使用期是一样的。

2.5.       证书策略

由对象标识符和限定符组成,这些对象标识符说明证书的颁发和使用策略有关。

2.6.       策略映射

表明两个CA域之间的一个或多个策略对象标识符的等价关系,仅在CA证书里存在。

2.7.       主体别名

指出证书拥有者的别名,如电子邮件地址、IP地址等,别名是和DN绑定在一起的。

2.8.       颁发者别名

指出证书颁发者的别名,如电子邮件地址、IP地址等,但颁发者的DN必须出现在证书的颁发者字段。

2.9.       主体目录属性

指出证书拥有者的一系列属性。

可以使用这一项来传递访问控制信息。

三、 X.509证书详细描述

Certificate :

:

= SEQUENCE {

       tbsCertificate      TBSCertificate,--证书主体

       signatureAlgorithm  AlgorithmIdentifier,--证书签名算法标识

       signatureValue      BITSTRING --证书签名值,是使用signatureAlgorithm部分指定的签名算法对tbsCertificate证书主题部分签名后的值.

        }

TBSCertificate :

:

= SEQUENCE {

       version        [0] EXPLICITVersionDEFAULTv1,--证书版本号

       serialNumber        CertificateSerialNumber,--证书序列号,对同一CA所颁发的证书,序列号唯一标识证书

       signature           AlgorithmIdentifier,--证书签名算法标识

       issuer              Name,               --证书发行者名称

       validity            Validity,           --证书有效期

       subject             Name,               --证书主体名称

       subjectPublicKeyInfoSubjectPublicKeyInfo,--证书公钥

       issuerUniqueID [1] IMPLICITUniqueIdentifierOPTIONAL,

                            --证书发行者ID(可选),只在证书版本2、3中才有

       subjectUniqueID[2] IMPLICITUniqueIdentifierOPTIONAL,

                            --证书主体ID(可选),只在证书版本2、3中才有

       extensions     [3] EXPLICITExtensionsOPTIONAL

                            --证书扩展段(可选),只在证书版本3中才有

       }

Version :

:

= INTEGER { v1(0),v2

(1),v3

(2) }

CertificateSerialNumber :

:

= INTEGER

 

AlgorithmIdentifier :

:

= SEQUENCE {

       algorithm              OBJECTIDENTIFIER,

       parameters             ANYDEFINEDBYalgorithmOPTIONAL }

  

Parameters:

  Dss-Parms :

:

= SEQUENCE { --parameters,DSA(DSS)算法时的parameters,

RSA算法没有此参数

       p            INTEGER,

       q            INTEGER,

       g            INTEGER }

 

SignatureValue:

Dss-Sig-Value :

:

= SEQUENCE { --sha1DSA签名算法时,签名值

                  r      INTEGER,

                     s      INTEGER }

 

Name:

:

=CHOICE{

    RDNSequence}

RDNSequence:

:

=SEQUENCEOFRelativeDistinguishedName

RelativeDistinguishedName:

:

=SETOFAttributeTypeAndValue

AttributeTypeAndValue:

:

=SEQUENCE{

    type    AttributeType,

    value   AttributeValue}

AttributeType:

:

=OBJECTIDENTIFIER

AttributeValue:

:

=ANYDEFINEDBYAttributeType

 

Validity:

:

=SEQUENCE{

       notBefore     Time, --证书有效期起始时间

       notAfter      Time  --证书有效期终止时间}

Time:

:

=CHOICE{

       utcTime       UTCTime,

       generalTime   GeneralizedTime}

UniqueIdentifier :

:

= BITSTRING

SubjectPublicKeyInfo :

:

= SEQUENCE {

       algorithm           AlgorithmIdentifier, --公钥算法

       subjectPublicKey    BITSTRING           --公钥值

       }

SubjectPublicKey:

RSAPublicKey:

:

=SEQUENCE{ --RSA算法时的公钥值

        modulus           INTEGER,--n

        publicExponent    INTEGER --e--}

 

Extensions :

:

= SEQUENCESIZE(1..MAX)OFExtension

Extension :

:

= SEQUENCE {

       extnID     OBJECTIDENTIFIER,

       critical   BOOLEANDEFAULTFALSE,

       extnValue  OCTETSTRING }

四、 X.509数字证书实例

这是从RFC2459InternetX.509PublicKeyInfrastructure标准文档中摘取的两个证书例子。

本文在例子的原来基础上加了些注释。

1、DSA证书,CA证书

证书包含699字节,证书版本号为3。

该证书包含以下内容:

(a)证书序列号是17(0x11);

(b)证书使用DSA和SHA-1哈希算法签名;

(c)证书发行者的名字是OU=nist;O=gov;C=US

(d)证书主体的名字是OU=nist;O=gov;C=US

(e)证书的有效期从1997-6-30到1997-12-31;

(f)证书包含一个1024bitDSA公钥及其参数(三个整数p、q、g);

(g)证书包含一个使用者密钥标识符(subjectKeyIdentifier)扩展项

(h)证书是一个CA证书(通过basicConstraints基本扩展项标识)

地址

内容

意义

0000

308202b7

SEQUENCECertificate:

:

SEQUENCE类型(30),数据块长度字节为2(82),长度为695(02b7)

0004

30820277

SEQUENCEtbsCertificate:

:

SEQUENCE类型,长度631

0008

a003

Version:

:

特殊内容-证书版本(a0),长度3

0010

020102

INTEGER2version:

:

整数类型(02),长度1,版本3

(2)

0013

020111

INTEGER17serialNumber:

:

整数类型(02),长度1,证书序列号17

0016

3009

SEQUENCEsignature:

:

SEQUENCE类型(30),长度9

0018

0607

signature:

:

OBJECTIDENTIFIER类型,长度7,dsa-with-sha算法

OID1.2.840.10040.4.3:

dsa-with-sha

2a8648ce380403

0027

302a

SEQUENCE以下的数据块表示issuer信息,长度为42

0029

310b

SET开始一个集合,长度为11

0031

3009

SEQUENCE开始一个序列,长度为9

0033

0603

OBJECTIDENTIFIER类型,长度3

OID2.5.4.6C

550406

0038

1302

PrintableString 'US'

5553

0042

310c

SET开始一个集合,长度为12

0044

300a

SEQUENCE开始一个序列,长度为10

0046

0603

OBJECTIDENTIFIER类型,长度3

OID2.5.4.10O

55040a

0051

1303

PrintableString 'gov'

676f76

0056

310d

SET开始一个集合,长度为13

0058

300b

SEQUENCE开始一个序列,长度为11

0060

0603

OBJECTIDENTIFIER类型,长度3

OID2.5.4.11:

OU

55040b

0065

1304

PrintableString 'nist'

6e697374

0071

301e

SEQUENCEvalidity:

:

SEQUENCE类型(30),长度30

0073

170d

notBefore:

:

UTCTime类型(23),长度13

UTCTime '970630000000Z'

3937303633303030

303030305a

0088

170d

notBefore:

:

UTCTime类型(23),长度13

UTCTime '971231000000Z'

3937313233313030

303030305a

0103

302a

SEQUENCE以下数据块表示subject信息,长度42

0105

310b

SET,长度11

0107

3009

SEQUENCE长度9

0109

0603

OBJECTIDENTIFIER类型,长度3

OID2.5.4.6:

C

550406

0114

1302

PrintableString 'US'

5553

0118

310c

SET,长度12

0120

300a

SEQUENCE长度10

0122

0603

OBJECTIDENTIFIER类型,长度3

OID2.5.4.10:

O

55040a

0127

1303

PrintableString 'gov'

676f76

0132

310d 

SET,长度13

0134

300b

SEQUENCE长度11

0136

0603

OBJECTIDENTIFIER类型,长度3

OID2.5.4.11:

OU

55040b

0141

1304

PrintableString 'nist'

6e697374

0147

308201b4

SEQUENCEsubjectPublicKeyInfo:

:

SEQUENCE类型(30),长度436

0151

30820129

SEQUENCE类型(30),长度297

0155

0607

IDENTIFIER类型,长度7

OID1.2.840.10040.4.1

2a8648ce380401

0164

3082011c

SEQUENCE类型(30),长度284

DSA算法的parameters,三个整数p、q、g

0168

028180

INTEGER   p参数,长度128

d43802c5357bd50ba1

7e5d72596355d34556

eae2251a6bc5a4abaa

0bd462b4d221b195a2

c601c9c3fa016f7986

833d03 61e1f192acbc

034e89a3c9534af7e2

a648cf421e21b15c2b

3a7fbabe6b5af70a26

d88e1bebecbf1e5a3f

45c0bd3123be6971a7

c290fea5d680b524dc

449ceb4df9daf0c8e8

a24c99075c8e352b7d

57

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2