解决上述身份验证问题的关键是确保获取的公钥途径是合法的,能够验证服务器的身份信息,为此需要引入权威的第三方机构 CA。CA 负责核实公钥的拥有者的信息,并颁发认证”证书”,同时能够为使用者提供证书验证服务,即 PKI 体系。 基本的原理为,CA 负责审核信息,然后对关键信息利用私钥进行”签名”,公开对应的公钥,客户端可以利用公钥验证签名。CA 也可以吊销已经签发的证书,基本的方式包括两类 CRL 文件和 OCSP。CA 使用具体的流程如下:
a.服务方 S 向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证; b.CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等; c.如信息审核通过,CA 会向申请者签发认证文件-证书。 证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书序列号等信息的明文,同时包含一个签名; 签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA 的私钥对信息摘要进行加密,密文即签名; d.客户端 C 向服务器 S 发出请求时,S 返回证书文件; e.客户端 C 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA 的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法; f.客户端然后验证证书相关的域名信息、有效时间等信息; g.客户端会内置信任 CA 的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA 的证书,证书也会被判定非法。 在这个过程注意几点: a.申请证书不需要提供私钥,确保私钥永远只能服务器掌握; b.证书的合法性仍然依赖于非对称加密算法,证书主要是增加了服务器信息以及签名; c.内置 CA 对应的证书称为根证书,颁发者和使用者相同,自己为自己签名,即自签名证书; d.证书=公钥+申请者与颁发者信息+签名; 3.3 证书链 如 CA 根证书和服务器证书中间增加一级证书机构,即中间证书,证书的产生和验证原理不变,只是增加一层验证,只要最后能够被任何信任的CA根证书验证合法即可。 a.服务器证书 server.pem 的签发者为中间证书机构 inter,inter 根据证书 inter.pem 验证 server.pem 确实为自己签发的有效证书; b.中间证书 inter.pem 的签发 CA 为 root,root 根据证书 root.pem 验证 inter.pem 为自己签发的合法证书; c.客户端内置信任 CA 的 root.pem 证书,因此服务器证书 server.pem 的被信任。
服务器证书、中间证书与根证书在一起组合成一条合法的证书链,证书链的验证是自下而上的信任传递的过程。 二级证书结构存在的优势: a.减少根证书结构的管理工作量,可以更高效的进行证书的审核与签发; b.根证书一般内置在客户端中,私钥一般离线存储,一旦私钥泄露,则吊销过程非常困难,无法及时补救; c.中间证书结构的私钥泄露,则可以快速在线吊销,并重新为用户签发新的证书; d.证书链四级以内一般不会对 HTTPS 的性能造成明显影响。
证书链有以下特点: a.同一本服务器证书可能存在多条合法的证书链。 因为证书的生成和验证基础是公钥和私钥对,如果采用相同的公钥和私钥生成不同的中间证书,针对被签发者而言,该签发机构都是合法的 CA,不同的是中间证书的签发机构不同; b.不同证书链的层级不一定相同,可能二级、三级或四级证书链。 中间证书的签发机构可能是根证书机构也可能是另一个中间证书机构,所以证书链层级不一定相同。 3.4 证书吊销 (责任编辑:admin) |