数字证书是由具有权威性、可信性和公正性的第三方证书认证机构(CA)进行数字签名的一个可信的数字化文件。
数字证书具有以下特性
数字证书采用ANS.1 DER编码进行各个信息进行编码,ANS.1 DER编码是关于每个元素的标记、长度和值的编码系统,采用该编码系统对证书各项信息进行编码,组成特定的整数数据结构。
证书的基本数据结构如下:
Certificate ::= SEQUENCE {tbsCertificate TBSCertificate,signatureAlgorithm AlgorithmIdentifier,signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {version [0] EXPLICIT Version DEFAULT v1,serialNumber CertificateSerialNumber,signature AlgorithmIdentifier,issuer Name,validity Validity,subject Name,subjectPublicKeyInfo SubjectPublicKeyInfo,issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,-- If present, version MUST be v2 or v3subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,-- If present, version MUST be v2 or v3extensions [3] EXPLICIT Extensions OPTIONAL-- If present, version MUST be v3}
Version ::= INTEGER { v1(0), v2(1), v3(2) }
CertificateSerialNumber ::= INTEGER
Validity ::= SEQUENCE {notBefore Time,notAfter Time }
Time ::= CHOICE {utcTime UTCTime,generalTime GeneralizedTime }
UniqueIdentifier ::= BIT STRING
SubjectPublicKeyInfo ::= SEQUENCE {algorithm AlgorithmIdentifier,subjectPublicKey BIT STRING }
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
Extension ::= SEQUENCE {extnID OBJECT IDENTIFIER,critical BOOLEAN DEFAULT FALSE,extnValue OCTET STRING-- contains the DER encoding of an ASN.1 value-- corresponding to the extension type identified-- by extnID}
上述的整数数据结构由tbsCertificate,signatureAlgorithm和signatureValue三个域构成。这些域的含义如下:
tbsCertificate域包含了主题名称和颁发者名称、主体的公钥、证书的有效期以及其他相关信息。
signatureAlgorithm域包含证书签发机构签发该证书使用的密码算法标识(数字签名算法)。
AlgorithmIdentifier ::= SEQUENCE {algorithm OBJECT IDENTIFIER,parameters ANY DEFINED BY algorithm OPTIONAL }
signatureValue域包含了对tbsCertificate域进行数字签名的结果。
本项描述了编码证书的版本号。
本项是CA分配给每个证书的一个正整数,一个CA签发的每张证书的序列号必须是唯一的,CA必须保证序列号是非负数。序列号可以长整数,证书用户必须能够处理长达20个8位字节的序列号值。CA必须保证使用不大于20个8位字节的序列号。
本项包含CA签发该证书所使用的密码算法的标识符,这个算法标识符必须与
证书中的signatureAlgorithm项的算法标识符相同。
本项标识了证书签名和证书颁发的实体。必须包含一个非空的甄别名。该项被定义为Name类型,他的ASN.1结构如下:
Name ::= CHOICE { -- only one possibility for now --rdnSequence RDNSequence }RDNSequence ::= SEQUENCE OF RelativeDistinguishedNameRelativeDistinguishedName ::=SET SIZE (1..MAX) OF AttributeTypeAndValueAttributeTypeAndValue ::= SEQUENCE {type AttributeType,value AttributeValue }AttributeType ::= OBJECT IDENTIFIERAttributeValue ::= ANY -- DEFINED BY AttributeTypeDirectoryString ::= CHOICE {teletexString TeletexString (SIZE (1..MAX)),printableString PrintableString (SIZE (1..MAX)),universalString UniversalString (SIZE (1..MAX)),utf8String UTF8String (SIZE (1..MAX)),bmpString BMPString (SIZE (1..MAX)) }
Name描述了一些由属性组成的层次结构的名称,如国家名,相应的值 C=CN。
本项是一个时间段,在这个时间段内,CA担保与维护证书的状态信息。该项被表示成一个具有两个时间值的SEQUENCE的类型数据:证书的有效的起始时间和证书有效期的终止时间。
本项描述了与主体公钥项中的公钥的相对应的实体。主体名称可以在出现在主体项和/或主体替换名称的拓展项中(subjectAAltName)。如果主体是一个CA,那么主体项必须是一个非空的与颁发者相匹配的甄别名称。
本项用来表示公钥和相应的公钥算法。公钥算法使用算法标识符 AlgprithmIdentifier 结构来表示。当公钥算法为RSA时,AlgprithmIdentifier 结构定影参见 PKCS#7。
本项主要用来处理主体或者颁发者名称重用的问题。国内标准中,Intelnet中证书不会出现该项,要求在证书处理过程中需要识别该项。
本项主要用来处理主体名称重用的问题。国内标准中,Intelnet中证书不会出现该项,要求在证书处理过程中需要识别该项。