《HTTP - Https》
一:HTTP 缺点?
- 明文通讯(也是最受诟病的一个缺点)
- 不验证对方的身份(你说你是你?你怎么证明你是你呢?)
- 无法验证报文的完整性,可能已经被篡改(在挨打的边缘,来回试探)
二:HTTPS概述(采用非对称加密方式 + 对称加密)
- 基于HTTP协议
- SSL(Secure Socket Layer 安全套接层)为 HTTPS 提供安全的通信管道。
- TLS(Transport Layer Security 安全层传输协议)为 HTTPS 安全的数据传输(数据的加解密处理、身份验证以及数据完整性)。
3:HTTPS通信步骤
- 浏览器发起请求
- 访问服务器的443端口发起请求,请求携带了浏览器支持的加密算法和哈希算法。
- 服务器收到请求
- 选择浏览器支持的加密算法和哈希算法。同时把 带有[公钥+颁发机构+过期时间等]的证书返回给客户端 (同时还有证书的hash摘要)。
- 浏览器进入数字证书认证环节(hash摘要相同),这一部分是浏览器内置的TLS完成的:
- 浏览器会根据证书找到服务器下发证书对应的机构。
- 如果查到了对应的机构,则取出该机构颁发的公钥。
- 如果没找到,提示用户该证书是不是由权威机构颁发,是不可信任的。
- 用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。
- 浏览器会先验证证书签名的合法性。
- 签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。
- 如果网址一致会检查证书有效期,证书过期了也会提示用户。
- 认证通过后, 浏览器生成一个随机数R,并使用网站公钥对R进行加密。
- 浏览器将加密的R传送给服务器。
- 服务器用自己的私钥解密得到R。(因为非对称加密计算量大,整个通信过程只会用到一次非对称加密算法,之后通信都是通过对称加密算法)
- 服务器以R为密钥使用了对称加密算法加密网页内容并传输给浏览器。
- 浏览器以R为密钥使用之前约定好的解密算法(对称加密算法)获取网页内容。
-
四:HTTPS 缺点
- 慢 比 HTTP 慢 2~100 倍。(慢在了HTTP通信和加解密计算)
- HTTPS连接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本。
- 多余的网络负载和网络IO
- 加密/解密 算法也会使得CPU多出很多开销。
- 贵/花钱
五:参考