随着SSL证书的广泛应用,申请SSL证书的人也越来越多,但是很多使用SSL证书的用户其实并不太了解SSL证书。他们仅仅是因为要把站点从HTTP转换到HTTPS而申请使用SSL证书,而最终用户也只是获取SSL证书也是证书链的一部分而已。
在本文将为大家介绍关于SSL证书的根证书和中间根证书的知识。
根证书是指CA机构颁发SSL证书的核心,是信任链的起始点。根证书是浏览器是否对SSL证书每个浏览器都有一个根证书库,有的浏览器是采用自主的根证书库,而一些浏览器则采取第三方的根证书库。而根证书库是下载客户端浏览器时预先加载根证书的合集。因此根证书是十分重要的,因为它可确保浏览器自动信任已使用私钥签名的SSL证书。
受信任的根证书是属于证书颁发机构(CA),而CA机构是验证和颁发SSL证书的组织机构。
浏览器是如何鉴定信任网站的SSL证书?其实当客户端访问服务器时,浏览器会查看SSL证书并执行快速验证SSL证书的真实性。
浏览器鉴定SSL证书身份验证的操作是根据证书链的内容。那么证书链是什么?
用户在获取SSL证书之前,首先要生成证书签名请求(CSR)和私钥。在最简单的迭代中,用户将生成的CSR发生到证书颁发机构,然后使用CA机构的根证书的私钥签署用户的SSL证书,并将SSL证书发回给用户。
当浏览器检测到SSL证书时,就会查看证书是由其中一个受信任的根证书签名(使用root的私钥签名)。由于浏览器信任root,所以浏览器也信任根证书签名的任何证书。
而证书链是由两个环节组成—信任锚(CA 证书)环节和已签名证书环节。信任锚证书CA 环节可以对中间证书签名;中间证书的所有者可以用自己的私钥对另一个证书签名。这两者结合就构成了证书链。
证书颁发机构(CA)不会直接从根目录颁发服务器证书(即SSL证书),因为这种行为是十分危险的,因为一旦发生错误颁发或者需要撤销root,则使用root签名的每个证书都会被撤销信任。
因此,为了避免这种风险发生,CA机构一般会引用中间根。CA机构使用其私钥对中间根进行签名,使浏览器信任中间根。然后CA机构使用中间根证书的私钥来签署用户申请的SSL证书。这种中间根的形式可以重复多次,即使用中间根签署另一个中间件,然后CA机构通过中间件签署SSL证书。
这是证书链的可视化过程,从上述例子可看出,CA机构只需要使用一个中间体来保持简单的操作,但其实真正的证书链通常要复杂的多。
当根证书以数字方式签署中间证书时,就会将部分信任转移到中间证书。因为签名是直接来源于收信人的根证书的私钥,因此它会自动受信任。
当浏览器或其他客户端检测到服务端的SSL证书,就会收到证书本身或与证书相关联的公钥。然后通过公钥,解锁数字签名,查看是由哪家企业签署了证书。即当客户端浏览器访问网站时,会对服务器用户的SSL证书进行身份验证,通过公钥来解锁加密的签名,解锁的签名就会随着签署的证书,反馈到浏览器信任的根证书库中。
如果解锁的签名链接是不在浏览器信任的根证书库中,浏览器就会对该证书显示不安全。
根证书CA是拥有一个或者多个受信任根的证书颁发机构,即CA机构已扎根在主要浏览器的信任库中。而中间跟CA或子CA是颁发中间根的证书颁发机构,他们不一定在浏览器的信任库中有根证书,而是将他们的中间根链接回收到受信任的第三方根,这种就被称为交叉签名。
所以有一些CA机构颁发的证书并不是直接从他们的根源发出的,而是通过中间根签署证书来加强安全层,这有助于减少发生错误或安全事件的机率。如果撤销中间根,而不是撤销根证书以及按扩展名签署的证书,这种做法会导致中间根签发的证书不受信任。
其实目前就有一件经典的案例,就是谷歌和其他主流的浏览器都取消对赛门铁克品牌的SSL证书。据悉,赛门铁克的SSL证书目前已颁发了数百万,取消对其的信任似乎是一件艰巨的项目。但在实际中,这是一项非常简单的工作,因为只需要在浏览器的根证书库中删除Symantec CA的所有根就可以。
单一根是由CA拥有的,可直接颁发证书,可以让部署证书的操作步骤变得更加简单。而链式根是Sub CA用于颁发证书的内容,是一个中间证书,但是因为中间根CA没有自己受信任的证书,必须链接到第三方受信任的CA。
链式根和单一根的区别具体如下:
链式根需要比较复杂的安装方法,因为中间根需要加载到托管证书的每个服务器和应用程序。
链式根需要受到链接的CA支配,因为他们无法控制root用户,一旦root CA停业,他们也会收到巨大的牵连。
根证书和中间证书过期的话,中间根必须要在根证书之前,这样就会增加工作难度。