简介
HTTPS,安全的HTTP,也被称为HTTP over TLS,TLS的前身是SSL。HTTPS的安全基础是SSL。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
SSL协议:
SSL记录协议–建立在可靠的传输协议之上,为高层协议提供数据封装,压缩、加密等基本功能。
SSL握手协议–建立在SSL记录协议之上,用户在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密秘钥。
- HTTPS协议需要到证书颁发机构CA申请证书。
- 客户端无法内置所有证书,所以需要服务端将证书发送给客户端
- 证书包含:
- 证书信息:过期时间和序列号
- 所有者信息:姓名等
- 所有者公钥
- 客户端放着证书伪造,所以在服务端发送证书到客户端后,客户端需要验证接收到的证书
- 客户端通过数字签名验证证书有效性
HTTPS基本原理
HTTPS其实是由两部分组成:HTTP + SSL/TLS,在HTTP上加以一层处理加密信息的模块。
- 客户端发起HTTPS请求,连接到服务端的443端口
- 服务端配置。采用HTTPS协议的服务器必须有一套数字证书,可以自己制作或者向组织申请。自己制作的需要客户端验证通过才可以访问。这套证书其实就是公钥和私钥。
- 服务端向客户端发送证书,这个证书其实就是公钥,包含证书的办法机构、过期时间等信息
- 客户端验证公钥是否有效,有异常则弹框提示,没问题则生成一个随机值,然后用证书对该随机值进行加密
- 客户端将上一步骤生成的加密后的随机值发送给服务端,以后客户端和服务端就用这个随机值来进行加密解密。
- 服务端用私钥解密客户端发送过来的加密随机值,这个随机值就是客服端和服务端之间的私钥。服务端把响应内容通过该值就行对称加密。
- 服务端将对称加密后的数据发送给客户端。
- 客户端用之前生成的私钥(随机值)解密服务端传过来的信息。
HTTPS缺点
- HTTPS协议握手阶段比较费时
- 连接缓存不如HTTP高效
- SSL证书需要花钱
- SSL证书需要绑定IP,不能再同一IP上绑定多个域名,IPv4资源无法支撑
- HTTPS协议的加密范围有限,无法保证绝对的安全