Skip to content Skip to footer

第5讲 什么是根证书?什么是可信根认证计划?!

我们来看一看实际证书链(也叫证书路径),如下图所示,Sectigo就是顶级根证书,CerSign EV SSL CA用于签发EV SSL证书,CerSign OV SSL CA用于签发OV SSL证书,CerSign DV SSL CA用于签发DV SSL证书。

Sectigo这个顶级根证书还用于签发代码签名证书和客户端证书,如下图所示:

我们再看一组采用国密算法的国密SSL证书专用顶级根证书的证书链,如下图所示,CerSign SM2 SSL Root是一个专门用于签发SSL证书的国密算法顶级根证书,已经签发了三个SSL中级根证书,分别用于签发国密DV SSL证书、国密OV SSL 证书和国密EV SSL证书,不能用于签发其他类型的数字证书。

讲证书链,当然不能不讲交叉签名。交叉签名就是用一个顶级根证书给另外一个顶级根签名,签名后另外一个顶级根成为了第一个顶级根证书的中级根证书,原先的3级证书链就变成了4级证书链。为什么要做交叉签名呢?当然是因为被交叉签名的根一般是新根,浏览器和操作系统还未信任和没有全部信任,需要用老根来带新根,就像出道的明星带新人一样的道理。如下左图所示,Sectigo AAA (AAA Certificate Services)是一个2004年的老根证书,而Sectigo (USERTrust RSA Certification Authority)是2010年的根证书,老根AAA Certificate Services已经给这个新根做了交叉签名,这就是为何许多读者看到证书链为4级的情况。而如果删除这个Sectigo AAA根证书或禁用交叉签名证书,则证书链会显示为如下中图的3级证书链。也就是说,这张SSL证书可以走两条信任链,一个是走Sectigo AAA 顶级根的信任链,一个是走Sectigo顶级根的信任链,Windows的证书验证机制是优先走签发日期较新的信任链,由于交叉根证书是2019年签名的,这就是为何不少用户反映为何CerSign签发给用户的SSL证书总是显示为4级证书链。如果Sectigo在签发交叉根证书是使用比新的根证书还要早一分钟的时间,则Windows会优先显示Sectigo (USERTrust)这个3级证书链。

零信浏览器在验证国密根证书时改进了Windows的信任链验证方式,如果有两个顶级根证书都是预置信任的,则验证到某个根证书是信任的,即使不是自签证书,也不再往上验证。这样就不会再走交叉根这条证书链了。这个验证方式的改进减少了证书链验证次数,加快了证书验证速度,能更快速地显示加密锁标识,也有利于新根直接显示为顶级根证书。

最后简单讲一讲浏览器或操作系统的可信根证书认证计划,目前各大浏览器都有自己的可信根证书认证计划,CA机构需要按照浏览器厂商的要求提交相关的材料申请预置信任其顶级根证书。也就是说,各个浏览器维护了一个自己的信任源列表,只有浏览器信任的顶级根证书签发的SSL证书,浏览器才会信任并显示加密锁标识,否则会提示“不安全”或“根证书不受信任”。上面截图显示的完整证书链是因为Windows已经信任了Sectigo的顶级根证书,大家才会看到正常的3级或4级证书链。零信浏览器也有自己的可信根证书认证计划,所以,大家看到的完整的国密SSL证书证书链是因为此国密根证书在零信浏览器中已预置信任,大家如果下载这张证书在Windows中查看,则是无法正常显示的,因为Windows无法正常识别SM2算法SSL证书和证书链。

笔者认为:目前国际上的根证书信任机制是各个浏览器自己各搞一套,严重加重了各个CA机构的根预置工作负担,给新的CA机构造成了不公平的市场壁垒。很遗憾的是,目前我国的国密SSL证书根认证计划也是走的这条路,各个支持国密算法的国产浏览器也都是各自搞一套自己的根认证计划。所幸的是,多个国产浏览器都默认信任国家根证书,这就给各个CA机构省去了向各个浏览器申请根预置的时间和精力,也为各个浏览器省去了处理根预置的事情。所以,建议各个CA机构自签自己的国密根证书,生成自己的国密顶级根证书,在自己的顶级根证书下面签发一个或多个专门用于签发SSL证书的中级根证书,并向各个国密浏览器申请国密顶级根证书预置信任,这样就实现了用户证书可以走两条信任链,确保自己签发的国密SSL证书有更好的通用性,支持更多的国密浏览器。返回搜狐,查看更多