中间证书,其实也叫中间CA(中间证书颁发机构,Intermediate certificate authority, Intermedia CA),对应的是根证书颁发机构(Root certificate authority ,Root CA)。为了验证证书是否可信,必须确保证书的颁发机构在设备的可信CA中。若是证书不是由可信CA签发,则会检查颁发这个CA证书的上层CA证书是不是可信CA,客户端将重复这个步骤,直到证实找到了可信CA(将容许创建可信链接)或者证实没有可信CA(将提示错误)。html
为了构建信任链,每一个证书都包括字段:“使用者”和“颁发者”。 中间CA将在这两个字段中显示不一样的信息,显示设备如何得到下一个CA证书,重复检查是不是可信CA。浏览器
根证书,必然是一个自签名的证书,“使用者”和“颁发者”都是相同的,因此不会进一步向下检查,若是根CA不是可信CA,则将不容许创建可信链接,并提示错误。安全
例如:一个服务器证书 domain.com,是由Intermedia CA签发,而Intermedia CA的颁发者Root CA在WEB浏览器可信CA列表中,则证书的信任链以下:服务器
证书 1 - 使用者:domain.com;颁发者:Intermedia CA网络
证书 2 - 使用者:Intermedia CA;颁发者: Root CAdom
证书 3 - 使用者:Root CA ; 办法和: Root CA工具
当Web浏览器验证到证书3:Root CA时,发现是一个可信CA,则完成验证,容许创建可信链接。固然有些状况下,Intermedia CA也在可信CA列表中,这个时候,就能够直接完成验证,创建可信链接。操作系统
要得到中间证书,通常有两种方式:第一种、由客户端自动下载中间证书;第二种、由服务器推送中间证书。如下分别讨论。htm
一张标准的证书,都会包含本身的颁发者名称,以及颁发者机构访问信息: Authority Info Access,其中就会有颁发者CA证书的下载地址。blog
经过这个URL,咱们能够得到这个证书的颁发者证书,即中间证书。Windows、IOS、MAC都支持这种证书获取方式,但Android不支持这种方式,因此,若是咱们仅依靠这种方式来得到中间证书,就没法在Android系统上创建可信链接。
除了操做系统支持外,还有一个很重要的因素,就是客户端能够正常访问公网。若是客户端自己在一个封闭的网络环境内,没法访问公网下载中间证书,就会形成失败,没法创建可信链接。
此外,有些CA的中间证书下载地址由于种种缘由被“墙”掉了,也会形成咱们没法得到中间证书,进而没法创建可信连接。
虽然自动下载中间证书的机制如此不靠谱,但在有些应用中,这倒是惟一有效的机制,譬如邮件签名证书,因为咱们发送邮件时,没法携带颁发邮件证书的中间证书,每每只能依靠客户端本身去下载中间证书,一旦这个中间证书的URL没法访问(被“墙”掉)就会形成验证失败。
服务器推送中间证书,就是将中间证书,预先部署在服务器上,服务器在发送证书的同时,将中间证书一块儿发给客户端。咱们部署证书,首先就要找到颁发服务器证书的中间证书,能够用中间证书下载工具 。
若是咱们在服务器上不主动推送中间证书,可能会形成的问题
虽然咱们不部署中间证书,在大多数状况,咱们依然能够创建可信的HTTPS链接,但为了不以上这些状况,咱们必须在服务器上部署中间证书。
因此,为了确保咱们在各类环境下都能创建可信的HTTPS链接,咱们应该尽可能作到如下几点:
一、必须在服务器上部署正确的中间证书,以确保各种浏览器都能得到完整的证书链,完成验证。
二、选择可靠的SSL服务商,有些小的CA机构,由于各类缘由,形成他们的中间证书下载URL被禁止访问,即便咱们在服务器上部署了中间证书,但也可能存在某种不可测的风险,这是咱们应该尽力避免的。
三、中间证书每每按期会更新,因此在证书续费或者从新签发后,须要检查是否更换过中间证书。