HTTP
HTTP又叫超文本传输协议,用于从万维网服务器传输超文本内容到本地浏览器的传输协议,数据是以明文方式传输,如果有攻击者截取传输信息,可直接读懂里面的信息,因此,HTTP协议不适合传输一些敏感的信息。
HTTPS
HTTPS又叫超文本安全传输协议,在HTTP下加入SSL层,HTTPS的安全基础是SSL,加密详细内容需要SSL。主要作用是分两种:一种是建立一个安全信息通道,另一种是验证服务器的真实性。
HTTP与HTPPS的区别
HTTP是明文传输,数据都是未加密,安全性差,HTTPS数据传输过程是加密的,安全性好
HTTPS需要需要用到CA(数字证书认证机构)申请的证书,一般都是要收费的,比如赛门铁克,沃通
HTTP页面响应速度比HTTPS快,主要因为HTTP使用TCP三次握手建立连接,客户端与服务器需要交换三次包,而HTTPS在这个基础上,还要加上SSL握手需要的包
HTTP端口用的是80,HTTPS用的是443 HTTPS更耗费服务器资源
TCP三次握手
第一次握手:尝试连接服务器端,向服务器发送SYN包,客服端进入SYN-SEND状态等待服务器确认
第二次握手:服务器接收到客服端的SYN包后并确认,同时向客服端发送SYN包,即同步加确认包,服务器进入SYN_RECV状态
第三次握手:客户端接收到服务端的同步加确认包,也向服务器发送同步加确认包,发送完毕,完成三次握手
HTTPS解决的问题
- 信任主机问题
采用HTTPS的服务器必须报CA申请同于证明服务器用途类型的证书,该证书只有用于对于服务器的时候,用户才信任这个主机
- 通讯过程的数据保密
通过秘钥来加密,如果用对称加密,不同的客服端,服务器端都要维护大量秘钥,而且秘钥如何约束也是问题,所以一般采用不对称加密与对称加密一起,客服端获取服务器端的公钥,然后用公钥对下面对称加密的秘钥规则约定进行加密并发送服务器端,服务器端用私钥解密后便可以获取里面的对称加密的秘钥,下面的通讯便用这个秘钥加密
HTTPS 的工作原理
- 客服端发起HTTPS请求
客户端输入一个https的网址,然后连接到服务器的443端口
2.服务器端配置
采用HTTPS协议的服务器必须要有CA颁发的证书
证书的内容一般有
- 证书的发布机构CA
- 证书的有效期
- 公钥
- 证书所有者
- 签名
3.服务器向客服端传输证书
4.客服端解析证书
- 首先验证证书所有者和证书有限期
- 然后查看本地内置的受信任CA,看看证书中的CA是否受信任
- 用本地的CA的公钥对签名进行解密
- 浏览器使用相同的hash算法算出证书的hash值,然后与签名进行比较
- 一致则证书合法,没有被冒充
- 读取证书中的公钥,进行后续加密
5.客服端用证书公钥加密秘钥传给服务器
6.后续的传输便用这个秘钥加密