23 | HTTPS是什么?SSL/TLS又是什么?
-
为什么要有 HTTPS? http是明文传输,容易在链路中或者、修改或者伪造请求/响应报文,数据不具有可信。
-
什么是安全?
- 机密性
- 完整性
- 身份认证
- 不可否认
- 什么是HTTPS? HTTPS = HTTP + SSL/TSL,默认端口号 443
4. SSL/TLS
24 | 固若金汤的根本(上):对称加密与非对称加密
-
对称加密 加密和解密时使用的密钥都是同一个。
-
非对称加密 使用两个密钥:公钥和私钥,公钥加密后只能用私钥解密,反过来,私钥加密后也只能用公钥解密。公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢,常用的有 RSA 和 ECC;
-
混合加密 在通信刚开始的时候使用非对称算法,解决密钥交换的问题。然后用随机数产生对称算法使用的“会话密钥”,再用公钥加密,对方拿到密文后用私钥解密,取出会话密钥。
25 | 固若金汤的根本(下):数字签名与证书
- 摘要算法保证了“数字摘要”和原文是完全等价的。所以,我们只要在原文后附上它的摘要,就能够保证数据的完整性。
- 数字签名是私钥对摘要的加密,可以由公钥解密后验证,实现身份认证和不可否认。
- 公钥的分发需要使用数字证书,必须由 CA 的信任链来验证,否则就是不可信的。
26 | 信任始于握手:TLS1.2连接过程解析
- TLS 协议的组成:记录协议、警报协议、握手协议、变更密码规范协议等。
- 握手的目标是安全地交换对称密钥,需要三个随机数,第三个随机数“Pre-Master”必须加密传输,绝对不能让黑客破解。
27 | 更好更快的握手:TLS1.3特性解析
28 | 连接太慢该怎么办:HTTPS的优化
- 硬件优化和软件优化。
- 服务器端应当开启“OCSP Stapling”功能,避免客户端访问 CA 去验证证书。
- 会话复用。
29 | 我应该迁移到HTTPS吗?
- 首先要申请数字证书。
- 配置HTTPS,在Nginx上配置。
listen 443 ssl;
ssl_certificate xxx_rsa.crt; #rsa2048 cert
ssl_certificate_key xxx_rsa.key; #rsa2048 private key
ssl_certificate xxx_ecc.crt; #ecdsa cert
ssl_certificate_key xxx_ecc.key; #ecdsa private ke
- 重定向跳转。使用HSTS可以避免重定向的响应被窜改。在访问同样的域名时,自动改为https。