X509数字证书结构和实例Word格式.docx
《X509数字证书结构和实例Word格式.docx》由会员分享,可在线阅读,更多相关《X509数字证书结构和实例Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
[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
tbsCertificate
TBSCertificate,--证书主体
signatureAlgorithm
AlgorithmIdentifier,--证书签名算法标识
signatureValue
BITSTRING
--证书签名值,是使用signatureAlgorithm部分指定的签名算法对tbsCertificate证书主题部分签名后的值.
}
TBSCertificate
version
[0]
EXPLICITVersionDEFAULTv1,--证书版本号
serialNumber
CertificateSerialNumber,--证书序列号,对同一CA所颁发的证书,序列号唯一标识证书
signature
AlgorithmIdentifier,--证书签名算法标识
issuer
Name,
--证书发行者名称
validity
Validity,
--证书有效期
subject
--证书主体名称
subjectPublicKeyInfoSubjectPublicKeyInfo,--证书公钥
issuerUniqueID
[1]
IMPLICITUniqueIdentifierOPTIONAL,
--证书发行者ID(可选),只在证书版本2、3中才有
su