寒哥管理的技术专题技术干货https协议系列

https之二 服务端与CA

2017-01-21  本文已影响82人  laien

1、为什么需要引入CA

由上一篇我们知道,TLS/SSL通过非对称加密码,让客户端与服务端协商出一个通过的公共密钥,然后通过这个临时的公共密钥对http的明文进行加密解密。这样是可以保证通讯的安全,但有个问题:协商密码的时候,客户端需要先知道服务端的公钥才可以通过非对称加密来协商密钥,而对服务端要求的前提是合法的服务器掌握着对应的私钥。这个问题就引发出了以下的隐患:

因此该方案下至少存在两类问题:中间人攻击和信息抵赖。

Paste_Image.png

解决上述身份验证问题的关键是确保获取的公钥途径是合法的,能够验证服务器的身份信息,为此需要引入权威的第三方机构 CA。CA 负责核实公钥的拥有者的信息,并颁发认证"证书",同时能够为使用者提供证书验证服务,即 PKI 体系。

2、CA与身份认证的原理

要理解CA是怎么进行安全的认证需要先了解一个事情:多数浏览器开发商在发布版本时会事先植入常用认证机构(CA)的的公钥。
基本的原理为,CA 负责审核信息,然后对关键信息利用私钥进行"签名",公开对应的公钥,客户端可以利用公钥验证签名。CA 也可以吊销已经签发的证书,基本的方式包括两类 CRL 文件和 OCSP。CA 使用具体的流程如下:

Paste_Image.png

1.服务端生成公钥私钥对,确认申请信息,生成请求文件(不包含私钥)并向CA申请认证
2.CA会对服务端的申请进行线上线下的校验,核实主体是否为真实存在,企业是否合法等
3.CA审核通过会向服务端签发一份文件---即证书

Paste_Image.png

4.服务端收到证书并保存
5.客户端向服务端发送请求,服务端会先把证书返回给客户端
6.客户端 C 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应** CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即服务端的公钥**合法
7.客户端然后验证证书相关的域名信息、有效时间等信息
8.客户端会内置信任 CA 的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA 的证书,证书也会被判定非法

在这个过程注意几点:

上一篇 下一篇

猜你喜欢

热点阅读