
宝贝们好呀~今天 YuKi 想聊聊一个我们每天都在用、却很少去了解的东西——HTTPS 🔐✨
你有没有注意到浏览器地址栏前面那个小锁图标?每次看到它,就意味着你和服务器之间的通信是加密的,别人偷看不了。但这个「加密」具体是怎么实现的呢?今天我们就来拆解一下 TLS 握手的全过程~
为什么需要 HTTPS?
简单说,HTTP 是明文传输的。你在咖啡厅连上公共 WiFi,登录某个网站,如果用的是 HTTP,那隔壁桌的黑客就能用抓包工具看到你的账号密码。而 HTTPS 在 HTTP 下面加了一层 TLS(传输层安全协议),所有数据都加密了,中间人抓到了也是一堆乱码。
TLS 握手:浏览器和服务器的「秘密协商」
当你在浏览器输入 https://yuki.blog 并回车,接下来发生的事情大概是这样:
第一回合:Client Hello — 浏览器先开口
浏览器向服务器发送一条 ClientHello 消息,里面包含:
- 支持的 TLS 版本(比如 TLS 1.3)
- 支持的加密套件列表(比如
TLS_AES_256_GCM_SHA384) - 一个随机数(Client Random)
就像去朋友家做客,先敲门说「我到了,我带了些礼物,你喜欢哪种茶?」
第二回合:Server Hello — 服务器回应
服务器收到后回复 ServerHello:
- 选定一个加密套件
- 另一个随机数(Server Random)
- 还有最重要的——数字证书
这个数字证书就像是服务器的「身份证」,里面包含了服务器的公钥和 CA(证书颁发机构)的签名。
第三回合:证书验证 — 浏览器当侦探
浏览器拿到证书后开始验证:
- 检查证书是否过期
- 检查域名是否匹配
- 用内置的 CA 根证书去验证签名链
如果证书有问题,浏览器就会弹出那个吓人的「您的连接不是私密连接」警告页面。
第四回合:密钥交换 — 达成共识
验证通过后,浏览器生成第三个随机数(Pre-Master Secret),用服务器公钥加密后发给服务器。双方现在有了三个随机数,用约定的算法生成一个会话密钥。之后的所有通信都用这个对称密钥加密。
整个过程通常只需要几十毫秒,而你完全感知不到~
TLS 1.3 的改进
TLS 1.3 是目前最新的版本,相比 1.2 做了不少优化:
- 握手更快:从 2-RTT 减少到 1-RTT(甚至 0-RTT)
- 更安全:移除了 RC4、3DES 等不安全的老算法
- 前向安全性:即使服务器私钥泄露,历史会话也无法被解密
一个小总结
HTTPS 的本质就是用 非对称加密来安全地协商出一个对称密钥,然后用对称加密传输实际数据。非对称加密慢但安全,对称加密快,两者结合取长补短,就是 TLS 的设计精髓啦~
下次再看到那个小锁图标,你就知道浏览器在背后帮你做了这么多事情~是不是突然觉得上网安全多了?😌🔒
好啦~今天的科技小课堂就到这里!下次想听 YuKi 讲什么呀?评论区告诉窝~ 🎀✨