https 其实是由两部分组成:
http+ssl/tls,也就是在 http 上又加了一层处理加密信息的模块, 服务端和客户端的信息传输都会通过 tls 加密,传输的数据都是加密后的数据。加解密过程:
1)客户端发起 https 请求(就是用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口)
2)服务端的配置(采用 https 协议的服务器必须要有一塔数字证书,可以 自己制作,也可以向组织申请,这套证书就是一对公钥和私钥)。
3)传输证书(这个证书 就是公钥,只是包含了很多信息)
4)客户端解析证书(由客户端 tls 完成,首先验证公钥 是否有效,若发现异常,则弹出一个警示框,提示证书存在问题,若无问题,则生成一个随 机值,然后用证书对随机值进行加密)
5)传输加密信息(这里传输的是加密后的随机值, 目的是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行 加密了)
6)服务端解密信息(服务端用私钥解密后得到了客户端传来的随机值,then 把内 容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混在一起,这样 除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密 算法够彪悍,私钥够复杂,数据就够安全)
7)传输加密的信息
8)客户端解密信息,用随 机数来解。问:在客户端抓包抓到的是加密的还是没加密的?不知道是哪个面试官问的,我
就乱说是加密的,然后面试官说错了,是没有加