一、学习总结
- 第二十三章:HTTPS是什么?SSL/TLS又是什么?
-
因为 HTTP 是明文传输,所以不安全,容易被黑客窃听或窜改
-
通信安全必须同时具备机密性、完整性,身份认证和不可否认这四个特性
-
HTTPS 的语法、语义仍然是 HTTP,但把下层的协议由 TCP/IP 换成了 SSL/TLS;
-
SSL/TLS 是信息安全领域中的权威标准,采用多种先进的加密技术保证通信安全
-
OpenSSL 是著名的开源密码学工具包,是 SSL/TLS 的具体实现。
-
- 第二十四章:固若金汤的根本(上):对称加密与非对称加密
-
加密算法的核心思想是“把一个小秘密(密钥)转化为一个大秘密(密文消息)”,守 住了小秘密,也就守住了大秘密;
-
对称加密只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交换,常 用的有 AES 和 ChaCha20;
-
非对称加密使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交 换问题但速度慢,常用的有 RSA 和 ECC;
-
把对称加密和非对称加密结合起来就得到了“又好又快”的混合加密,也就是 TLS 里使 用的加密方式。
-
- 第二十五章:固若金汤的根本(下):数字签名与证书
-
摘要算法用来实现完整性,能够为数据生成独一无二的“指纹”,常用的算法是 SHA- 2;
-
数字签名是私钥对摘要的加密,可以由公钥解密后验证,实现身份认证和不可否认;
-
公钥的分发需要使用数字证书,必须由 CA 的信任链来验证,否则就是不可信的;
-
作为信任链的源头 CA 有时也会不可信,解决办法有 CRL、OCSP,还有终止信任。
-
- 第二十六章:信任始于握手:TLS1.2连接过程解析
-
HTTPS 协议会先与服务器执行 TCP 握手,然后执行 TLS 握手,才能建立安全连接;
-
握手的目标是安全地交换对称密钥,需要三个随机数,第三个随机数“Pre-Master”必须加密传输,绝对不能让黑客破解;
-
“Hello”消息交换随机数,“Key Exchange”消息交换“Pre-Master”;
-
“Change Cipher Spec”之前传输的都是明文,之后都是对称密钥加密的密文。
-
- 第二十七章:更好更快的握手:TLS1.3特性解析
-
为了兼容 1.1、1.2 等“老”协议,TLS1.3 会“伪装”成 TLS1.2,新特性在“扩展”里 实现;
-
1.1、1.2 在实践中发现了很多安全隐患,所以 TLS1.3 大幅度删减了加密算法,只保留了 ECDHE、AES、ChaCha20、SHA-2 等极少数算法,强化了安全;
-
TLS1.3 也简化了握手过程,完全握手只需要一个消息往返,提升了性能。
-
- 第二十八章:连接太慢该怎么办:HTTPS的优化
-
可以有多种硬件和软件手段减少网络耗时和计算耗时,让 HTTPS 变得和 HTTP 一样 快,最可行的是软件优化;
-
应当尽量使用 ECDHE 椭圆曲线密码套件,节约带宽和计算量,还能实现“False Start”;
-
服务器端应当开启“OCSP Stapling”功能,避免客户端访问 CA 去验证证书;
-
会话复用的效果类似 Cache,前提是客户端必须之前成功建立连接,后面就可以用“Session ID”“Session Ticket”等凭据跳过密钥交换、证书验证等步骤,直接开 始加密通信。
-
- 第二十九章:我应该迁移到HTTPS吗?
- 从 HTTP 迁移到 HTTPS 是“大势所趋”,能做就应该尽早做;
-
升级 HTTPS 首先要申请数字证书,可以选择免费好用的“Let’s Encrypt”
-
配置 HTTPS 时需要注意选择恰当的 TLS 版本和密码套件,强化安全
-
原有的 HTTP 站点可以保留作为过渡,使用 301 重定向到 HTTPS