好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

X.509 数字证书结构简介.docx

19页
  • 卖家[上传人]:洪易
  • 文档编号:39984051
  • 上传时间:2018-05-21
  • 文档格式:DOCX
  • 文档大小:29.93KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • X.509 数字证书结构简介数字证书结构简介1、简介X.509 被广泛使用的数字证书标准,是由国际电联电信委员会(ITU-T)为单点登录(SSO-Single Sign-on)和授权管理基础设施(PMI-Privilege Management Infrastructure)制定的 PKI 标准X.509 定义了(但不仅限于)公钥证书、证书吊销清单、属性证书和证书路径验证算法等证书标准在 X.509 系统中,CA 签发的证书依照 X.500 的管理,绑定了一个唯一甄别名(DN-Distinguished Name ),可以包含多个字段和值,还可以支持别名(Alternative Name )一个组织受信任的根证书会分发给所有需要用到的 PKI 系统的员工手上主流浏览器:IE、Netscape/Mozilla,Opera 和 Safari 会预先安装一部分根证书,这些根证书都是受信任的证书认证机构 CA,这样他们颁发的证书,浏览器将可以直接信任虽然用户可以删除或者禁用这些根证书,但事实上,用户很少这么做在最新的微软平台,甚至会在用户移除了预先安置的根证书后,当用户再访问这些被删除的根证书网站的时候,会自动将这些根证书恢复到信任列表中。

      X.509 包含了一个证书吊销列表(CRL-Certificate Revocation List)实施的标准,这在 PKI 系统中经常被人所忽略IETF 提出的检查证书有效性的方法是证书状态(OCSP- Online Certificate Status Protocol)Firefo3 缺省就是使用 OCSP 协议2、历史和用途X.509 最初是在 1988 年的 7 月 3 日发布的,版本是 X.509 v1,当时是作为 ITU X.500 目录服务标准的一部分它设定了一系列严格的 CA 分级体系来颁发数字证书和其他网络信任模型(譬如 PGP)对比,任何人,不仅仅是特定的 CA,可以签发并验证其他密钥证书的有效性X.509 2 版引入了主体和签发人唯一标识符的概念,以解决主体和/或签发人名称在一段时间后可能重复使用的问题大多数证书监视文档都极力建议不要重复使用主体或签发人名称,而且建议证书不要使用唯一标识符版本 2 证书尚未得到广泛使用X.509 3 版是最新的版本(1996 年)它支持扩展的概念,因此任何人均可定义扩展并将其纳入证书中现在常用的扩展包括:KeyUsage(仅限密钥用于特殊目的,例如“只签”)和 AlternativeNames(允许其它标识与该公钥关联,例如 DNS 名、电子邮件地址、IP 地址)。

      扩展可标记为“极重要”,以表示应选中该扩展并强制执行或使用例如,如果某一证书将 KeyUsage 扩展标记为“极重要”,而且设置为“keyCertSign”,则在 SSL 通信期间该证书出现时将被拒绝,因为该证书扩展表示相关私钥应只用于签写证书,而不应该用于 SSL3、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)1.2)Bit6 表示是否为结构类型(1 位结构类型);0 则表明编码类型是简单类型1.3)Bit5-bit1 是类型的 TAG 值根据 bit8-bit7 的不同值有不同的含义,具体含义见下表当 Bit8-bit7 为 universal(00)时,bit5-bit1 的值表示不同的 universal 的值:标记(TAG) 对应类型 备注[UNIVERSAL 1] BOOLEAN [有两个值:false 或 true][UNIVERSAL 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] UTF8String[UNIVERSAL 13] RELATIVE-OID[UNIVERSAL 16] SEQUENCE, SEQUENCE OF [有序数列,SEQUENCE 里面的每个数值都可以是不同类型的,而 SEQUENCE OF 里是 0 个或多个类型相同的数据][UNIVERSAL 17] SET, SET OF [无序数列,SET 里面的每个数值都可以是不同类型的,而 SET OF 里是 0 个或多个类型相同的数据][UNIVERSAL 18] Numeric String [0-9 以及空格][UNIVERSAL 19 ]Printable String [A-Z、a-z、0-9、空格以及符号'()+,-./:=?][UNIVERSAL 20] TeletexString, T61String[UNIVERSAL 21] VideotexString[UNIVERSAL 22] IA5String[UNIVERSAL 23] UTCTime [统一全球时间格式][UNIVERSAL 24] GeneralizedTime[UNIVERSAL 25] GraphicString[UNIVERSAL 26] VisibleString, ISO646String[UNIVERSAL 27] GeneralString[UNIVERSAL 28] UniversalString[UNIVERSAL 29] CHARACTER STRING[UNIVERSAL 30] BMPString[UNIVERSAL 31] reserved for future use当 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),即为 0xA32)数据块长度(1-128 个字节)长度字段,有两种编码格式若长度值小于等于 127,则用一个字节表示,bit8 = 0, bit7-bit1 存放长度值;若长度值大于 127,则用多个字节表示,可以有 2 到 127 个字节第一个字节的第 8 位为 1,其它低 7 位给出后面该域使用的字节的数量,从该域第二个字节开始给出数据的长度,高位优先还有一种特殊情况,这个字节为 0x80,表示数据块长度不定,由数据块结束标识结束数据块3)数据块的值存放数据块的值,具体编码随数据块类型不同而不同4)数据块结束标识(可选)结束标示字段,两个字节(0x0000),只有在长度值为不定时才会出现4、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)扩展部分包括:2.1)发行者密钥标识符证书所含密钥的唯一标识符,用来区分同一证书拥有者的多对密钥2.2)密钥使用一个比特串,指明(限定)证书的公钥可以完成的功能或服务,如:证书签名、数据加密等如果某一证书将 KeyUsage 扩展标记为“极重要”,而且设置为“keyCertSign”,则在 SSL 通信期间该证书出现时将被拒绝,因为该证书扩展表示相关私钥应只用于签写证书,而不应该用于 SSL2.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)主体目录属性指出证书拥有者的一系列属性可以使用这一项。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.