X .509 数字证书结构和实例 一、 X.509 数字证书的编码 X.509 证书的结构是用 ASN1(Abstract Sy ntax Notation One)进行描述数据结构,并使用ASN1 语法进行编码。 ASN1 采用一个个的数据块来描述整个数据结构,每个数据块都有四个部分组成: 1、数据块数据类型标识(一个字节) 数据类型包括简单类型和结构类型。 简单类型是不能再分解类型,如整型(INTERGER)、比特串(BIT STRING)、字节串(OCTET STRING)、对象标示符(OBJECT IDENTIFIER)、日期型(UTCTime)等。 结构类型是由简单类型和结构类型组合而成的,如顺序类型 (SEQUENCE, SEQUENCE OF)、选择类型(CHOICE)、集合类型(SET)等。 顺序类型的数据块值由按给定顺序成员成员数据块值按照顺序组成; 选择类型的数据块值由多个成员数据数据块类型中选择一个的数据块值; 集合数据块类型由成员数据块类型的一个或多个值构成。 这个标识字节的结构如下: 1.1. Bit8-bit7 用来标示 TAG 类型,共有四种,分别是 u niv ersal(00)、application(01)、contex t-specific(10)和priv ate(11)。 1.2. Bit6 表示是否为结构类型(1 位结构类型);0 则表明编码类型是简单类型。 1.3. Bit5-bit1 是类型的 TAG 值。根据 bit8-bit7 的不同值有不同的含义,具体含义见下表。 当 Bit8-bit7 为 u niv ersal(00)时,bit5-bit1 的值表示不同的 u niv ersal 的值: 标记(TAG) 对应类型 备注 [UNIVERSAL 1] BOOLEAN [有两个值:false 或 tru e] [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...