https 是什么
- 简单来说,https是http + ssl, 对http 通讯内容进行加密,使用tls/ssl(理论在传输层实现)加密的HTTP协议
- 需要理解SSL/TLS的工作原理,我们需要掌握加密算法。涉及到的加密算法有非对称加密和对称加密
- 对称加密: 通信双方使用相同的密钥进行加密,特点是加密速度快,但缺点是需要保护好密钥,密钥泄漏容易被破解。
- 非对称加密: 需要生成公钥和私钥 , 安全性更高,但是计算量较大
https的链接过程
https 主要分为证书验证阶段和内容传输阶段
证书验证阶段 :
- 客户端请求密钥
- 服务器接收到请求之后,返回证书,包括公钥
- 客户端接收到证书之后,会检验证书是不是合法,不合法的话,会弹出告警提醒、
数据传输阶段
- 验证证书合法,生成随机数
- 使用公钥进行加密,发送给服务端
- 服务器收到客户端发来的值,使用私钥进行界面
- 使用对称加密算法进行加密,传输给客户端
https 加密采用对称加密和非对称加密一起结合的。
证书验证阶段,采用非对称加密,数据传输阶段,采用对称加密。
在证书验证阶段,使用非对称加密,需要公钥和私钥,加入游览器的公钥泄漏,我们还是能够确保随机数的安全
在内容传输阶段,对称加密效率比较高,如果使用非对称加密,相当于客户端必须有自己的私钥,那么设计也是不合理的。
https是绝对安全的吗
不是绝对安全的,可以通过中间人攻击
中间人攻击指的是攻击者与通讯的两端分别创建独立的联系,交换收到的数据,让通讯两端认为链接正常。一般都是建立SSL链接,拦截客户端的请求,利用中间人获得CA证书,非对称加密的公钥,对称加密的密钥。
- 请求被劫持发送到中间人的服务器上
- 中间人服务器返回中间人自己的证书
- 客户端创建随机数,通过中间人证书的公钥对随机数进行加密发送给中间人,然后凭借随机数构造对称加密对传输内容进行加密传输。
- 中间人以客户端的请求向服务端发起请求,并建立相应的链接