推荐图书《图解HTTP》
HTTP:
全称是Hypertext Transfer Protocol Vertion (超文本传输协议),用于客户端和服务器之间的通信,在两台计算机之间使用http协议通信时,在一条通信线路上必定有一端是客户端,一段是服务器端
HTTP的缺点:
1、通信使用明文(不加密),内容可能会被窃听
2、不验证通信方的身份,因此有可能遭遇伪装
3、无法证明报文的完整性,所以有可能已遭改
HTTPS:
全称是Secure Hypertext Transfer Protocol(安全超文本传输协议),HTTPS = HTTP + 加密 + 认证 + 完整性保护
HTTPS的特点
1、HTTPS是身披SSL外壳的HTTP
SSL证书是数字证书的一种,类似于驾驶证、护照和营业执照的电子副本,SSL证书介绍SSL证书_百度百科
2、HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。
3、使用由数字证书认证机构(CA,certificate authority)和其相关机关颁发的公开密钥证书
4、HTTPS的通信步骤
步骤1: 客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件( CipherSuite )列表(所使用的加密算法及密钥长度等)。
步骤2: 服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
步骤3: 之后服务器发送Certificate报文。报文中包含公开密钥证书。
步骤4: 最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。
步骤5: SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用步骤3中的公开密钥进行加密。
步骤6: 接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。
步骤7: 客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。
步骤8: 服务器同样发送Change Cipher Spec报文。
步骤9: 服务器同样发送Finished报文。
步骤10:服务器和客户端的Finshed报文交换完毕之后, SsL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求。
步骤11:应层协议i,即发送HTTP响应。
步骤12:最后由客户端断开连接。断开连接时,发送close notify报文。上图做了一些省略,这步之后再发送TCP FIN报文来关闭与TCP的通信。
HTTPS的缺点:
1、相同的网络条件下,HTTPS协议会使页面加载时间延长50%,增加10%到20%的耗电,具体可参考上面的HTTPS通信步骤
2、HTTPS协议的安全是有范围的,在黑客工具、服务器劫持、拒绝服务攻击等方面起不到什么作用
3、SSL专业证书需要购买,功能越强大的证书费用越高
HTTP与HTTPS的区别总结:
1、HTTP 的 URL 以 http:// 开头,而 HTTPS 的 URL 以 https:// 开头
2、浏览器访问HTTPS开通的web网站时,浏览器的地址栏内会出现一个带锁头的标记
3、在 OSI 网络模型中,HTTP 工作于应用层,而 HTTPS 工作在传输层
4、HTTP 无需加密,而 HTTPS 对传输的数据进行加密,避免用户信息泄露
5、HTTPS复杂的传输方式,降低了被劫持的风险
6、HTTP 无需证书,而 HTTPS 需要CA认证证书
7、手机抓包通过Fiddler链接代理时,HTTPS需要特殊设置,在手机中安装证书,HTTP不需要设置
