我想问下,我建立企业根CA和二级CA后,使用二级CA签名的证书是否可以用根CA的公钥验证其身份?根CA颁发的二级CA证书和普通用户证书有哪些不同呢?

我设想,我设定独立根CA和独立附属CA,在不用的证书应用里使用不同的附属CA颁发,然后让根CA服务器离线保护根CA,同时我也可以方便管理和吊销我的附属CA签发的各类证书。比如我要做一个双向认证的WEB服务器,利用附属CA签发客户端证书,但我不知道在根CA离线的情况下,利用根CA的证书能否直接验证附属CA的证书签名是否有效?或者我需要在WEB服务器上使用证书链和根CA证书配合?亦或者我只需要在WEB服务器上指定证书链就可以呢?

回答:对于您的问题:

Q: 建立企业根CA和二级CA后,使用二级CA签名的证书是否可以用根CA的公钥验证其身份?

A: 如果是由二级CA颁发的证书,在通常的情况下,认证过程是这样的:客户端首先去查看证书的有效期,再次check证书的CDP最后查看证书的AIA;那么在这些过程中,我们首先要明确客户端上存在二级CA的证书和root CA的证书,同时CDP发布的位置能够被访问,那么不存在是否被root CA验证的问题。当上面的情况属实的话这个证书就可以被验证。您看到的文章来自活动目录seo http://gnaw0725.blog.51cto.com/156601/d-3

如果根证书和二级CA的证书都没有在客户端的store中,同时CDP发布的位置不能被访问,那么这个证书就不能被验证。

Q: 根CA颁发的二级CA证书和普通用户证书有哪些不同呢?

A: 根CA颁发的证书只能由根CA验证,同时在证书中出现的验证的CDP和AIA的信息不一样。证书被sign的CA不一样,比如root CA的证书是有root CA的证书sign的,二级CA的证书由二级证书sign的。

Q:利用附属CA签发客户端证书,但我不知道在根CA离线的情况下,利用根CA的证书能否直接验证附属CA的证书签名是否有效?

A: 其实对于这个问题的话,我们可以这样考虑,

1.       在服务器和客户端上都能验证证书有效性

2.       验证有效性时考虑:是否过期,是否能验证AIA,是否被吊销

3.       如果证书都没有过期,同时在客户端的store中存在有根CA和附属CA的证书,在则服务器和客户端都可以访问到CDP,那么我们不需要独立的根CA就可以让服务器工作正常

4.       所以,问题的重点是如何让客户端和服务器能过访问到CDP,如果独立CA的CDP发布到客户端和服务器都能访问到位置,那么就没有这样的问题。

5.       同时客户端和服务器都有独立CA和附属CA的服务器证书,那么AIA验证没有问题。

6.       同时在独立的根CA,在发布CDP时更改发布的时间到一个很长的时间,那么CDP就不用立即被发布,那么附属CA就不用验证CDP的有效性。

上面的条件同时满足时,就可以实现我们提到的正常验证即便是独立的根CA不online,但是中间涉及到太多的知识点。

---Devin Zhang

企业根CA和二级CA的区别的相关文章请参考