一. 定义
1.什么是HTTP?
HyperText Transfer Protocol,超文本传输协议,它是TCP/IP协议的一个应用层协议,用来定义客户端与服务端通讯的格式
2.什么是HTTPS?
HTTPS是HTTP的安全版,即在应用层HTTP与传输层TCP之间多了一层加密层TLS/SSL。普通的HTTP通信,会直接将明文数据给到TCP进行传输,而HTTPS会先将数据给到TLS/SSL进行加密,然后将加密后的数据给到TCP进行通信
二. HTTP与HTTPS的区别
- https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
- http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
- http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
- http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
三. HTTPS的工作原理
- 客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
- Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
- 客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
- 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
- Web服务器利用自己的私钥解密出会话密钥。
- Web服务器利用会话密钥加密与客户端之间的通信。
四. HTTPS的优缺点
1.优点:
- 使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
- 由SSL+HTTP进行加密传输,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
- HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
2.缺点
- HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%;
- HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
- SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用;
- SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名;
五. SSL/TLS的协议的基本过程
- 客户端向服务器端索要并验证公钥。
- 双方协商生成"对话密钥"。
- 双方采用"对话密钥"进行加密通信。
上面过程的前两步,又被称为“握手阶段”
六. 握手阶段的详细过程
“握手阶段”涉及四次通讯,且每次通信都是明文的
1. 客户端发出请求(ClientHello)
客户端向服务器发出加密通信的请求,并向服务器提供以下信息
- 支持的加密协议版本,比如TLS 1.0版
- 客户端生成的随机数,用于稍后生成“对话密钥”
- 支持的加密算法,比如RSA公钥加密
- 支持的压缩方法
2. 服务器响应(SeverHello)
服务器收到客户端请求后,向客户端发出回应,回应包含以下内容
- 确认使用的加密通信协议版本,如果客户端与服务器支持的版本不一致,则关闭加密通信
- 服务器生成的随机数,用于稍后生成“对话密钥”
- 确认使用的加密算法,比如RSA公钥加密
- 服务器证书
3. 客户端回应
客户端收到服务器回应后,首先验证证书的真实性与有效性。如果证书没有问题,客户端就会从证书中取出服务器的公钥,然后向服务器发送以下信息
- 一个随机数,该随机数用服务器公钥加密,防止被窃听
- 编码改变通知,表示随后的信息都将用双方协商的加密算法和密钥发送
- 客户端握手结束通知,这一项也是前面发送的所有内容的hash值,用来供服务器校验
4. 服务器的最后回应
服务器收到客户端的第三个随机数pre-master key之后,计算生成本次会话所用的“会话密钥”,然后向客户端发送下面信息
- 编码改变通知,表示随后的信息都将用双方协商的加密算法和密钥发送
- 服务器握手结束通知,这一项也是前面发送的所有内容的hash值,用来供客户端校验