安全技术
当前位置: 首页 > 安全技术 > PKI技术规范
数字证书分类

为适应复杂的应用场景,在实际应用中,通常需要将证书进行分类。有些分类方式X.509格式已经支持,但有些分类方式X.509格式本身并不支持,需要通过其他方式来识别。

证书通常可分为两大类:根据证书持有者分类和根据密钥分类。

一、根据证书持有者分类

1.根据证书持有者是否为CA进行分类

根据证书持有者是否为CA,可将证书分为2类:CA证书和用户证书。CA证书可以给用户或其他CA签发证书,用户证书不允许给其他用户或CA签发证书。

X.509格式中通过扩展项BasicConstraints来区分这2类证书。当其中的cA项为TRUE时表示CA证书,为FALSE时表示用户证书。

BasicConstraints扩展项格式用ASN.1描述如下:

BasicConstraints: # SEQUENCE {

CA BOOLEAN DEFAULT FALSE,

pathLenConstraint INTEGER (O..MAX) OPTIONAL

}

2.按照证书持有者类型进行分类

根据证书持有者类型,通常将证书分为几类:个人证书、单位证书和系统证书等;

个人证书是CA系统给个人签发的证书,代表个人身份。证书中需要包含个人信息如(姓名、身份证、E-mail、电话等)和个人的公钥。

单位证书是CA系统给机构或组织等签发的证书,代表单位身份。证书中需要包含单位信息(如名称、组织机构代码、E-mail、联系人等)和单位的公钥。

系统证书是CA系统给软件系统或设备系统等签发的证书,代表系统身份。证书中需要包含系统信息(如IP地址、域名等)和系统的公钥。系统证书又包括Web服务器证书、域控制器证书、VPN设备证书、OCSP服务器证书、时间戳服务器证书等。

X.509格式本身并不支持这种分类,通常通过在Subject中增加DN项进行区分,如可增加OU=PERSON表示个人证书,OU=UNIT表示单位证书等。为保持证书内容的统一性,扩展项KeyUsage、ExtKeyUsage必须设置合适的值。

二、根据密钥分类

1.根据密钥对产生方式进行分类

根据密钥对的产生方式,可将证书分为2类:签名证书和加密证书。

签名证书及私钥只用于签名验签,不能用于加密解密。为保证该密钥对的唯一性,该密钥对必须由用户端密码模块产生和保存,在证书签发过程中CA中心并不知道其私钥只对其公钥进行操作。

加密证书及私钥只用于加密解密,不能用于签名验签。为实现密钥恢复或行业监管,该钥对必须由CA中心产生,并回送给用户端密码模块保存。CA中心同时保存该密钥对。必要时可恢复该密钥对。

X.509格式本身并不支持这种分类;通常通过存储位置或应用系统进行区分。为保持证书内容的统一性,扩展项KeyUsage、ExtKeyUsage必须设置合适的值。

KeyUsage中已经定义的类型如下。

① digitaISignature:表示数字签名;

② nonRepudiation:表示不可抵赖;

③ keyEncipherment:表示密钥加密;

④ dataEncipherment:表示数据加密;

⑤ keyAgreement:表示密钥协商;

⑥ keyCertSign:表示证书签名;

⑦ CRLSign:表示CRL签名;

⑧ encipherOnly:表示只用于加密;

⑨ decipherOnly:表示只用于解密。

2.根据证书用途进行分类

根据证书用途,通常将证书分为SSL眼务器证书、SSL客户端证书、代码签名证书、Email证书、时间戳服务器证书、OCSP服务器证书等。SSL证书只用于SSL/TLS应用,Email证书只用于安全电子邮件,代码签名证书只用于对代码进行签名验签。

X.509格式中通过扩展项ExtKeyUsage来区分这几类证书。为保持证书内容的统一性,扩展项KeyUsage必须设置合适的值。

ExtKeyUsage中已经定义的类型如下:

① id-kp-serverAuth:用于SSL/TLS Web服务器身份认证;

② id-kp-clientAuth:用于SSL/TLS Web客户端身份认证;

③ id-kp-codeSigning:用于对可下载的执行代码进行签名;

④ id-kp-emaiIProtection:用于保护E-mail;

⑤ id-kp-timeStamping:用于将对象摘要值与时间绑定;

⑥ id-kp-OCSPSigning:用于对OCSP响应包进行签名。