ToolkitX
知识库工具箱

HTTPS 与 TLS

SSL/TLS 握手、证书链、加密原理

30min·高级

01. HTTPS 为啥要有?

HTTP 是明文的——就像寄明信片,中间每个邮局都能看见你写了啥。在咖啡馆蹭公共 WiFi,旁边的人可能正在偷看你的密码和银行卡号。 HTTPS 就是 HTTP + TLS/SSL 加密,相当于把明信片装进保险箱。即使中间人截到了数据包,看到的也是一堆乱码。

02. TLS 握手机制——在不安全的地方安全地商量密码

TLS 握手做的事就一件:双方在别人都能偷听的通道上,安全地商量出一个只有他俩知道的「秘密钥匙」。 简化版流程: 客户端先说「嗨,我支持这些加密方式,这是我的随机数 A」 服务器回「好,选这个方式,这是我的随机数 B 和我的证书(里面有公钥)」 客户端验证证书(确认对面不是假网站),生成随机数 C,用服务器公钥加密发过去 现在双方手里都有 A、B、C 三个随机数,各自算出同一个会话密钥,之后就用这个加密 关键点——就算有人全程偷听,也算不出这个密钥,因为随机数 C 是用公钥加密的,只有服务器的私钥能解开。

03. 证书和 CA 体系——网站的「身份证」

HTTPS 证书就是网站的「身份证」。你访问 bank.com,怎么确定对面真是银行不是钓鱼网站?靠 CA(证书颁发机构)。 CA 就像公安局——核实完网站身份后签发证书。你的浏览器里预置了可信 CA 的名单,只有经这些 CA 签发的证书才会被信任。 证书里面装着:网站域名、公钥、签发机构、有效期。证书过期、域名不匹配、或被吊销,浏览器就会弹出红色的「不安全」警告。

04. 给网站加 HTTPS

把网站从 HTTP 升级到 HTTPS 的基本步骤: 1. 去 CA 申请证书(Let's Encrypt 免费且支持自动化) 2. 把证书配到 Nginx 或 Apache 上 3. 设置 HTTP 自动跳转到 HTTPS 4. 把站内所有资源链接从 http:// 改成 https:// 用 Let's Encrypt + Certbot 基本可以一键搞定,还能自动续期。
nginx
# Nginx HTTPS 配置
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / { proxy_pass http://127.0.0.1:3000; }
}
# HTTP 自动跳 HTTPS
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
Let's Encrypt 证书 90 天过期,务必配好自动续期:certbot renew --dry-run

知识测验

1/5正确 0

HTTPS 用什么来加密通信?

下一节

DNS 深入理解

下一节