用户在用数字证书加密和验证数字签名时,硬要要先验证证书的有效性。
证书有效性的验证主要包括以下步骤:
1.验证CA签名
①把待验证证书设置为当前证书。
②根据当前证书中签发者信息查询签发者证书,并使用签发者证书验证当前证书中的数字签名是否正确。
③如果不正确,则待验证证书无效。
④如果正确且签发者证书是预先确定的可信任CA证书,则说明待验证证书的CA签名正确;否则,将签发者证书设置为当前证书,重复步骤②~④。
2.验证证书有效期
①如果待验证证书中not Before在当前日期之后,则该证书未生效。
②如果待验证证书中not After在当前日期之前,则该证书已过期。
③否则,该证书处于有效期内。
3.验证证书状态
(1)基于CRL验证证书状态
①根据待验证证书中扩展项CRLDistributionPoints信息获得CRL地址,并根据该地址下载CRL文件。
②检查CRL文件是否在有效期内,如果不在则需要重新下载。
③验证CRL中数字签名是否正确,若不正确则重新下载。
④如果CRL中包括待验证证书的序列号,则说明该证书状态为无效;否则说明该证书状态为有效。
(2)基于OCSP验证证书状态
①把待验证证书的序列号组织成OCSP请求包。
②把OCSP请求包发送给OCSP服务器。
③从OCSP服务器获得OCSP响应包。
④解析OCSP响应包获得该证书的当前状态。
4.验证证书其他属性
①验证证书密钥用途:KeyUsage、ExtKeyUsage、NetscapeCertType。
②验证证书策略:CertificatePolicie。
③其他专用属性。