该系列博客是记录自己的学习笔记,若有错误请大佬们指出
狗头声明,本文适用于:新手学习进步,老鸟回顾消遣
该系列以《图解HTTP》为基本路线,该书有11章节,所以本系列也决定编写11篇水文技术博客进行适当的拓展和补充,希望可以帮助大家。
本系列第二章提到过HTTP的特点有无状态和不安全,无状态在第二章使用Cookie解决,而不安全则使用HTTPS加密处理
HTTPS是什么
HTTTPS = HTTP + SSL/TLS,也就是运行在 SSL/TLS 协议上的 HTTP。规定了新的协议名“https”,默认端口号 443(http默认占用端口号80)
由图可知,解决安全问题其实还是使用了那个计算机领域解决问题的核心思想:加个中间层。在HTTP与TCP之间加个SSL/TLS协议。从此由“HTTP over TCP/IP”变成了“HTTP over SSL/TLS”
所以,学习HTTPS就是学习SSL/TLS这个新的协议。
SSL/TLS是一个负责加密通信的安全协议,建立在 TCP/IP 之上,所以也是个可靠(这个可靠是指TCP的数据完整可靠不丢失,并不是安全,安全靠的正是SSL/TLS)的传输协议;被用作 HTTP 的下层。
SSL 发展到 3.0 时被标准化,改名为 TLS,所以历史原因很多人称之为 SSL/TLS,或者直接简称为 SSL。
SSL 利用密码学,综合了对称加密、非对称加密、摘要算法、数字签名、数字证书等技术,使得不安全的HTTP通信变得安全。
启用了安全的 HTTPS 协议后,URI中的协议名也从“http”变成了“https”。
SSL/TLS协议
目前应用普及最广的是TLS1.2,更老版本的已经停用
协议中各种加密算法原理,我并不想现在去花费精力学习,因为我真的用不到,
(没错我就是能懒就懒)。
感兴趣的小伙伴可以看看这篇:看完这篇 HTTPS,和面试官扯皮就没问题了 - 掘金 (juejin.cn)
实现安全需要做到哪些? 如果通信过程具备了以下四个特性,就可以认为是安全的:
- 机密性(加密)
- 完整性(即数据在传输过程中没有被篡改;若能被篡改,加密又有何用)
- 身份认证(看完“信鸽”案例后更好理解)
- 不可否认
用“信鸽”来解释HTTPS
为了更好的理解,可以参考“信鸽”:用信鸽来解释 HTTPS (qq.com)
这个案例中的“初级交流”就是不安全的HTTP,于是:
- 使用了“
对称密钥加密”和“非对称密钥加密(公钥私钥)”解决了特性一:机密性
为了确定“盒子(即公钥)”主人的身份:
- 把“盒子”放在值得信任的
认证机构,只要数字证书是可信的,公钥就是可信的
SSL/TLS协议运行机制
从“信鸽”案例理解流程后,就可以学习具体的流程知识了:
大佬文章奉上:SSL/TLS协议运行机制的概述 - 阮一峰的网络日志 (ruanyifeng.com)
我并不想复制粘贴堆砌我文章的篇幅,大佬们鞭辟入里的文章已是经典,希望有学习需要的同学有耐心去点开链接学习大佬分享。
HTTPS更慢
- 1、这是自然的,多了一个中间层SSL/TLS嘛,在之前的HTTP通信基础上多了一个SSL通信,所以通信连接变慢
- 2、另外,在SSL/TLS的加密、解密等一系列的运算,比起HTTP直接明文传来传去不需要加密解密,需要的运行时间自然增加
解决方法:
没什么根本的解决方法,最多是一些优化,例如用更好的CPU;或者使用SSL加速,从而分担CPU压力。或者使用新版本TLS1.3,它大幅度简化了握手的过程(所以一切奇怪技巧的生命周期都不会很长,新版本一出,就是最优解。)