http协议是一种基于请求与响应模式的、无状态的应用层协议。
https协议是http协议的安全版,本质上也是http协议,只是在http协议的基础上添加了一个SSL或TLS协议层。
解决了以下三个方面的安全性:
- 提供验证服务,验证本次会话实体身份的合法性
- 提供加密服务,保证通信过程中消息不会被破译
- 提供防篡改服务,利用hash算法对消息进行签名,通过验证签名保证通信信息不会被篡改。
HTTPS协议先通过TCP/IP协议完成3次握手建立连接,然后是SSL握手协议完成客户与服务器之间的身份验证及密钥协商。
- 客户端向服务器发送SSL/TLS协议的版本号、加密算法种类、产生的随机数以及其它需要的各种信息
- 服务器从客户端支持的加密算法中选择一组加密算法与hash算法,并把自己的加密证书发送给客户端
- 浏览器获取服务器证书后验证其合法性,验证颁发机构合法性,验证证书中的网址与正在访问的网址是否一致。
- 客户端浏览器生成一串随机数并用服务器发送来的公钥加密,在使用约定好的hash算法计算握手消息,发送到服务端。
- 服务器接到握手消息后使用自己的私钥解密,并使用散列算法验证,这样双方都有了此次通信的密钥
- 服务器爱使用密钥加密一段握手信息,返回给和浏览器
- 浏览器使用密钥解密,并用散列算法验证,确定算法和密钥
Http请求报文由请求行(空格分隔,\r\n结尾),请求头,请求体组成。
请求头
User-agent
Accept
Host
Cookie
Refer
Cache-Control
Cache-Control 对响应内容进行缓存
Location 用于重定向
Set-Cookie 设置cookie