1、UNIVERSAL 1BOOLEAN有两个值:false或trueUNIVERSAL 2INTEGER整型值UNIVERSAL 3BIT STRING0位或多位UNIVERSAL 4OCTET STRING0字节或多字节UNIVERSAL 5NULLUNIVERSAL 6OBJECT IDENTIFIER相应于一个对象的独特标识数字UNIVERSAL 7OBJECT DESCRIPTOR一个对象的简称UNIVERSAL 8EXTERNAL, INSTANCE OFASN.1没有定义的数据类型UNIVERSAL 9REAL实数值UNIVERSAL 10ENUMERATED数值列表,这些数据每个都
2、有独特的标识符,作为ASN.1定义数据类型的一部分UNIVERSAL 12UTF8StringUNIVERSAL 13RELATIVE-OIDUNIVERSAL 16SEQUENCE, SEQUENCE OF有序数列,SEQUENCE里面的每个数值都可以是不同类型的,而SEQUENCE OF里是0个或多个类型相同的数据UNIVERSAL 17SET, SET OF无序数列,SET里面的每个数值都可以是不同类型的,而SET OF里是0个或多个类型相同的数据UNIVERSAL 18NumericString09以及空格UNIVERSAL 19PrintableStringA-Z、a-z、0-9、空
3、格以及符号()+,-./:=?UNIVERSAL 20TeletexString, T61StringUNIVERSAL 21VideotexStringUNIVERSAL 22IA5StringUNIVERSAL 23UTCTime统一全球时间格式UNIVERSAL 24GeneralizedTimeUNIVERSAL 25GraphicStringUNIVERSAL 26VisibleString, ISO646StringUNIVERSAL 27GeneralStringUNIVERSAL 28UniversalStringUNIVERSAL 29CHARACTER STRINGUNIV
4、ERSAL 30BMPStringUNIVERSAL 31reserved for future use当Bit8-bit7为context-specific(10)时,bit5-bit1的值表示特殊内容:0 - 表示证书的版本1 - issuerUniqueID,表示证书发行者的唯一id2 - subjectUniqueID,表示证书主体的唯一id3 - 表示证书的扩展字段如 SEQUENCE 类型数据块,其TAG类型位UNIVERSAL(00),属于结构类型(1),TAG值为16(10000)所以其类型标示字段值为(00110000),即为0x30。再如,证书扩展字段类型的数据块,TAG类
5、型为(10),属结构类型(1),TAG的值为3(00011),所以其类型标示字段值为(10100011),即为0xA3。2、数据块长度(1-128个字节)长度字段,有两种编码格式。 若长度值小于等于127,则用一个字节表示,bit8 = 0, bit7-bit1 存放长度值; 若长度值大于127,则用多个字节表示,可以有2到127个字节。第一个字节的第8位为1,其它低7位给出后面该域使用的字节的数量,从该域第二个字节开始给出数据的长度,高位优先。 还有一种特殊情况,这个字节为0x80,表示数据块长度不定,由数据块结束标识结束数据块。3、数据块的值存放数据块的值,具体编码随数据块类型不同而不同。
6、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
7、After”两项组成,它们分别由UTC时间或一般的时间表示(在RFC2459中有详细的时间表示规则)。1.6. 主体证书拥有者的可识别名,这个字段必须是非空的,除非你在证书扩展中有别名。1.7. 主体公钥信息主体的公钥(以及算法标识符)。1.8. 颁发者唯一标识符标识符证书颁发者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。1.9. 主体唯一标识符证书拥有者的唯一标识符,仅在版本2和版本3中有要求,属于可选项。2、X.509证书扩展部分可选的标准和专用的扩展(仅在版本2和版本3中使用),扩展部分的元素都有这样的结构: Extension:=SEQUENCE extnID OBJECT
8、IDENTIFIER, critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRINGextnID:表示一个扩展元素的OIDcritical:表示这个扩展元素是否极重要extnValue:表示这个扩展元素的值,字符串类型。扩展部分包括:2.1. 发行者密钥标识符证书所含密钥的唯一标识符,用来区分同一证书拥有者的多对密钥。2.2. 密钥使用一个比特串,指明(限定)证书的公钥可以完成的功能或服务,如:证书签名、数据加密等。如果某一证书将 KeyUsage 扩展标记为“极重要”,而且设置为“keyCertSign”,则在 SSL 通信期间该证书出现时将被
9、拒绝,因为该证书扩展表示相关私钥应只用于签写证书,而不应该用于 SSL。2.3. CRL分布点指明CRL的分布地点。2.4. 私钥的使用期指明证书中与公钥相联系的私钥的使用期限,它也有Not Before和Not After组成。若此项不存在时,公私钥的使用期是一样的。2.5. 证书策略由对象标识符和限定符组成,这些对象标识符说明证书的颁发和使用策略有关。2.6. 策略映射表明两个CA域之间的一个或多个策略对象标识符的等价关系,仅在CA证书里存在。2.7. 主体别名指出证书拥有者的别名,如电子邮件地址、IP地址等,别名是和DN绑定在一起的。2.8. 颁发者别名指出证书颁发者的别名,如电子邮件地
10、址、IP地址等,但颁发者的DN必须出现在证书的颁发者字段。2.9. 主体目录属性指出证书拥有者的一系列属性。可以使用这一项来传递访问控制信息。三、X.509证书详细描述Certificate tbsCertificate TBSCertificate, - 证书主体 signatureAlgorithm AlgorithmIdentifier, - 证书签名算法标识 signatureValue BIT STRING-证书签名值,是使用signatureAlgorithm部分指定的签名算法对tbsCertificate证书主题部分签名后的值. TBSCertificate version 0E
11、XPLICIT Version DEFAULT v1, - 证书版本号 serialNumber CertificateSerialNumber, - 证书序列号,对同一CA所颁发的证书,序列号唯一标识证书 signature AlgorithmIdentifier, -证书签名算法标识 issuer Name, -证书发行者名称 validity Validity, -证书有效期 subject -证书主体名称 subjectPublicKeyInfo SubjectPublicKeyInfo,-证书公钥 issuerUniqueID1IMPLICIT UniqueIdentifier OPTIONAL, - 证书发行者ID(可选),只在证书版本2、3中才有 subjec
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1