证书的结构中的关键内容包括:序列号、公钥、用户名称、签发者、CA签名和其他一些附属信息等。证书验证过程就是依赖于这信息和公钥对应的私钥进行。通常的证书验证过程包括以下要点:
1、确认证书内容是正确的和完整的,没有被篡改,CA签名是正确的;
2、确认证书是有效的,在有效期内并且没有被吊销(CRL中没有该证书序列号);
3、确认CA证书是可以被信任的证书,如果CA证书不是根证书,还要继续对CA证书进行验证;
4、通过与用户的交互,基于证书中的公钥和公开密钥算法确认用户的身份。
确认用户身份的过程是基于公开密钥算法的,基本过程如下:
1、被验证方发送自己的用户证书给验证书;
2、验证方提取证书中的公钥,并产生一个随机数Rp,使用该公钥加密该随机数得到加密的随机数Re并发给被验证方;
3、被验证方使用自己的私钥解密Re得到Rep并发回给验证方;
4、验证方对比Rp和Rep,如果一致,则验证通过,否则,验证不通过。
如果被验证方能够正确解密使用该证书上的公钥加密的信息,即可认为被验证方确实是证书的持有人,也就可以确定其身份。
无论何种类型的证书,其验证过程都是基本一致的,当然,根据具体的情况,其验证协议和要求提供的材料可能有一些区别。关于证书验证的有很多种情况。
OpenSSL提供了证书验证的一些指令,包括普通验证和一种标准的OCSP协议处理指令。