证书有效性,一般要检查三点:
- 验证证书是否是否在有效期内?
检查证书上有签发起始时间和过期时间
思考:如何保证取到的时间点是可信的?
- 验证证书是否被吊销了?
吊销的证书是无效的,一般有俩种方式:
- CRL(Certificate Revocation List),证书吊销列表,离线方式;
- OCSP(Online Certificate Status Protocol ),在线证书状态检查协议(RFC6960)。
- 验证证书的真实性,是否是上级CA签发的?
CA下发给网站的证书是分层的证书链,从根证书开始一层一层直到网站证书。要验证某一层证书是否确实由上级CA签发的,需要验证附带在该证书上由上级CA通过签名函数及私钥生成的数字签名。数字签名的解密需要上级CA的公钥,这个公钥的明文就就保存在证书链中的上层证书中。而根证书是自己给自己签名,也就是根证书的签名也是靠自己保存的公钥来解密。这就很好解决了证实真实性的问题,也就能够证明最底层的网站证书确实是证书中表明的CA发放的。
备注:证书检测不是强制的,如果ca机构的检测服务器宕机,只会检查本地的根证书列表。