https 工作流程

注意,为了更好的区分明文和密文,用【AA】代表AA被加密,AA 代表正常未加密

client 发出请求
server 收到请求,并自己生成一对密钥,即 公钥S 和 私钥S
server 把生成的 公钥S 传递给 client (除了 公钥S ,还有很多额外信息)
client 收到 公钥S 后进行判断,若无效,弹出警告,否则生成一串随机数,我们称之为 私钥C ,然后 client 用 server 传过来的 公钥S 对该随机数加密,形成【私钥C】
client 把【私钥C】传递给 server
server 收到【私钥C】,用 私钥S 把【私钥C】解密成 私钥C,然后把需要传递的数据用 私钥C 进行加密
server 把【数据】传递给 client
client 收到【数据】,用 私钥C 解密,完成一波收割
整体流程就是这样,那么就想问,为什么有这么多 key?一会公钥一会私钥?很烦?

那我们先假设 server 有私钥和公钥,那么传递给 client 公钥,client 用公钥加密数据,传递给 server,server 用私钥再解密,听上去很美好,但是很烦,因为涉及到对称加密和非对称加密

对称加密是指加密和解密用一致的密钥,特点是快

非对称加密是指密钥区分公钥和私钥,公钥加密,私钥解密(私钥好比唯一一把钥匙,公钥好比锁,钥匙只有一把,但锁可以有很多,被锁头锁上的数据全天下只有一把私钥才能打开),特点是安全,但是慢


这回理解了吧,上述方式缺点是 慢,所以 https 的流程综合了对称加密和非对称加密的优点,利用非对称加密的安全性来加密那一串随机数--私钥C,利用对称加密的快捷性来加密报文,总体来说就是把真正加密解密的密钥(私钥C)用公钥S和私钥S来加密,这就是 https 工作的流程,哎,能想出这种操作,很灵性啊。



我的直观理解:

1.客户端向服务器发送连接请求

2.服务器将公钥(锁)+证书(表明自己身份的,非假冒的(由第三方机构颁发)),发送给客户端

3.客户端接收到锁和证书之后,对其进行验证,验证成功则生成一串序列即密钥(类似密码锁(对称加密的密钥)),然后用服务器发送过来的公钥(锁)加密产生的序列(密钥),发送给服务器

4.服务器收到后用私钥解密,得到客户端产生的序列(密钥),使用此密钥加密数据,发送给客户端

5.客户端收到之后用自己产生的序列(密钥)解密数据。


其中锁1为非对称加密,锁2为对称加密  ;用非对称加密来保证对称加密的密钥不被泄漏



作者:一杯刘
链接:https://www.jianshu.com/p/a68ca86183d7
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/u012232736/article/details/80677441