资源预览内容
第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
第9页 / 共33页
第10页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
X.509 数字证书结构和实例数字证书结构和实例 一、一、 X.509 数字证书的编码数字证书的编码X.509 证书的结构是用 ASN1(Abstract Syntax Notation One)进行描述数据结构,并使用 ASN1 语法进行编码。ASN1 采用一个个的数据块来描述整个数据结构,每个数据块都有四个部分组成:1、数据块数据类型标识(一个字节)、数据块数据类型标识(一个字节)数据类型包括简单类型和结构类型。简单类型是不能再分解类型,如整型(INTERGER)、比特串(BIT STRING)、字节串(OCTET STRING)、对象标示符(OBJECT IDENTIFIER)、日期型(UTCTime)等。结构类型是由简单类型和结构类型组合而成的,如顺序类型(SEQUENCE, SEQUENCE OF)、选择类型(CHOICE)、集合类型(SET)等。 顺序类型的数据块值由按给定顺序成员成员数据块值按照顺序组成,; 选择类型的数据块值由多个成员数据数据块类型中选择一个的数据块值; 集合数据块类型由成员数据块类型的一个或多个值构成。这个标识字节的结构如下:1.1. Bit8-bit7用来标示 TAG 类型,共有四种,分别是universal(00)、application(01)、context-specific(10)和 private(11)。这两位为 universal(00)时,bit5-bit1 的值表示不同的 universal 的值:标记(TAG) 对应类型UNIVERSAL 1 BOOLEAN 有两个值:false 或trueUNIVERSAL 2 INTEGER 整型值UNIVERSAL 3 BIT STRING 0 位或多位UNIVERSAL 4 OCTET STRING 0 字节或多字节UNIVERSAL 5 NULL UNIVERSAL 6 OBJECT IDENTIFIER 相应于一个对象的独特标识数字UNIVERSAL 7 OBJECT DESCRIPTOR 一个对象的简称UNIVERSAL 8 EXTERNAL, INSTANCE OF ASN.1 没有定义的数据类型UNIVERSAL 9 REAL 实数值UNIVERSAL 10 ENUMERATED 数值列表,这些数据每个都有独特的标识符,作为ASN.1 定义数据类型的一部分UNIVERSAL 12 UTF8StringUNIVERSAL 13 RELATIVE-OIDUNIVERSAL 16 SEQUENCE, SEQUENCE OF 有序数列,有序数列,SEQUENCE 里面里面的每个数值都可以是不同类型的,而的每个数值都可以是不同类型的,而SEQUENCE OF 里是里是 0 个或多个个或多个类型相同的数据类型相同的数据UNIVERSAL 17 SET, SET OF 无序数列,无序数列,SET 里面的每个数值都可以是不同里面的每个数值都可以是不同类型的,而类型的,而 SET OF 里是里是 0 个或多个或多个类型相同的数据个类型相同的数据UNIVERSAL 18 NumericString 09 以及空格UNIVERSAL 19 PrintableString A-Z、a-z、0-9、空格以及符号()+,-./:=?UNIVERSAL 20 TeletexString, T61StringUNIVERSAL 21 VideotexStringUNIVERSAL 22 IA5StringUNIVERSAL 23 UTCTime 统一全球时间格式UNIVERSAL 24 GeneralizedTimeUNIVERSAL 25 GraphicStringUNIVERSAL 26 VisibleString, ISO646StringUNIVERSAL 27 GeneralStringUNIVERSAL 28 UniversalStringUNIVERSAL 29 CHARACTER STRINGUNIVERSAL 30 BMPStringUNIVERSAL 31. reserved for future use这两位为 context-specific(10)时,bit5-bit1 的值表示特殊内容:0 - 表示证书的版本1 - issuerUniqueID,表示证书发行者的唯一 id2 - subjectUniqueID,表示证书主体的唯一 id3 - 表示证书的扩展字段1.2. bit6 表示是否为结构类型(1 位结构类型);0 则表明编码类型是简单类型。1.3. bit5-bit1是类型的 TAG 值。根据 bit8-bit7 的不同值有不同的含义,具体含义见上面的描述。如 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. 有效期有效期证书有效期的时间段。本字段由”Not Before”和”Not After”两项组成,它们分别 由 UTC 时间或一般的时间表示(在 RFC2459 中有详细的时间表示规则)。1.6. 主体主体证书拥有者的可识别名,这个字段必须是非空的,除非你在证书扩展中有别名。1.7. 主体公钥信息主体公钥信息主体的公钥(以及算法标识符)。1.8. 颁发者唯一标识符颁发者唯一标识符标识符证书颁发者的唯一标识符,仅在版本 2 和版本 3 中有要求,属于可选项。1.9. 主体唯一标识符主体唯一标识符证书拥有者的唯一标识符,仅在版本 2 和版本 3 中有要求,属于可选项。2、X.509 证书扩展部分证书扩展部分可选的标准和专用的扩展(仅在版本 2 和版本 3 中使用),扩展部分的元素都有这样的结构:Extension := SEQUENCE extnID OBJECT IDENTIFIER,critical BOOLEAN DEFAULT FALSE,extnValue OCTET STRING extnID:表示一个扩展元素的 OIDcritical:表示这个扩展元素是否极重要extnValue:表示这个扩展元素的值,字符串类型。扩展部分包括:2.1. 发行者密钥标识符发行者密钥标识符证书所含密钥的唯一标识符,用来区分同一证书拥有者的多对密钥。2.2. 密钥使用密钥使用一个比特串,指明(限定)证书的公钥可以完成的功能或服务,如:证书签名、数据加密等。如果某一证书将 KeyUsage 扩展标记为“极重要”,而且设置为“keyCertSign”,则在 SSL 通信期间该证书出现时将被拒绝,因为该证书扩展表示相关私钥应只用于签写证书,而不应该用于 SSL。2.3. CRL 分布点分布点指明 CRL 的分布地点。2.4. 私钥的使用期私钥的使用期指明证书中与公钥相联系的私钥的使用期限,它也有 Not Before 和 Not After 组成。若此项不存在时,公私钥的使用期是一样的。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 BIT STRING -证书签 名值, 是使用signat ureAlg orithm 部分指 定的签 名算法 对tbsCer tifica te 证书 主题部 分签名 后的值.TBSCertificate := SEQUENCE version 0 EXPLICIT Version DEFAULT v1, - 证书版本号serialNumber C e r t i f ic a t e S e r i a l N u m b e r, - -证 书 序 列 号, 对 同 一C A 所 颁 发 的 证 书, 序 列 号 唯 一 标 识 证 书signature AlgorithmIdentifier, -证书签名算法标识issuer Name, -证书发行者名称validity Validity, -证书有效期subject Name, -证书主体名称subjectPublicKeyInfo SubjectPublicKeyInfo,-证书公钥issuerUniqueID 1 IMPLICIT UniqueIdentifier OPTIONAL,- 证书发行者 ID(可选),只在证书版本 2、3 中才有subjectUniqueID 2 IMPLICIT UniqueIdentifier OPTIONAL,- 证书主
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号