连载中 9/15

HTTPS:从证书配置到 HTTP/2 的完整落地

2026-09-26 · 11 阅读 · 0 评论 · 0 赞

证书是什么

HTTPS = TLS:握手时用非对称加密协商出对称密钥,之后的传输全部用对称加密(快)。证书是"身份的公证":CA 用自己的私钥给你的公钥签名,浏览器验证签名链——你的证书 → 中间证书 → 根证书(浏览器内置信任)。配证书最常见的翻车就是漏了中间证书:自己浏览器好使(有缓存),用户浏览器报"证书不受信任"。上线前用 SSL Labs 扫一遍,链不全会直接标出来。

标准配置:可直接抄

server {
    listen 443 ssl;
    http2 on;                                  # HTTP/2(新版写法)
    server_name example.com;

    ssl_certificate     /etc/nginx/ssl/fullchain.pem;   # 必须是全链!
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;       # 1.0/1.1 早已淘汰
    ssl_session_cache   shared:SSL:10m;        # 会话复用,省握手
    ssl_session_timeout 1d;

    add_header Strict-Transport-Security "max-age=31536000" always;
    # HSTS:告诉浏览器一年内只用 https 访问我,防降级劫持
}

免费证书用 Letu0027s Encrypt:certbot 申请并自动改 Nginx 配置,certbot renew 挂进 systemd timer,90 天续期全自动——证书过期导致全站瘫痪的事故,多数是"手动续期忘了"。

强制跳转与环路

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;   # 80 全部 301 到 443
}
#
# 经典环路:Nginx 终结了 TLS,后端看到的是 http 请求
# 后端框架发现"http"不是 https,又发起 301 跳 https —— 死循环
# 解法:Nginx 传 X-Forwarded-Proto $scheme(反向代理篇配过)
#       后端以这个头判断原始协议,而不是直接看请求 scheme

"HTTPS 之后页面突然重定向过多"十有八九是这个环路——TLS 在哪终结,协议信息就要在哪传出。

HTTP/2 的收益

HTTP/1.1 的痛点是队头阻塞:一个连接同一时刻只能跑一个请求,浏览器只能开 6 个连接并发。HTTP/2 在一条连接上多路复用:几十个请求交错传输互不阻塞,配合头部压缩,资源多的页面首屏提升明显。开启只需一个词,兼容性零成本(浏览器不支持就自动回退 1.1)。验证:DevTools 的 Protocol 列显示 h2 就是生效了。

细节加分项

会话复用(session cache/tickets)让回访用户跳过完整握手;OCSP stapling 让证书状态校验由 Nginx 代劳(省一次浏览器到 CA 的往返);TLS 1.3 的 1-RTT 握手把新建连接的开销又砍一半。这些默认值已不错,知道有这回事即可。安全与体验齐了,下一篇玩转 rewrite——重定向背后的四个 flag。

☕
503

10 年全栈工程师 · 503咖啡馆主理人

#HTTPS#证书配置#HTTP2#HSTS#重定向环路

评论 (0)

热门推荐

连载中 11/22

主从搭建实操:从零配出一主两从

光讲原理不过瘾?手把手搭一主两从:my.cnf 六个参数、复制账号、GTID、CHANGE REPLICATION SOURCE TO、SHOW REPLICA STATUS 验收,附翻车排查清单。

#MySQL#主从复制#GTID#主从搭建#高可用
2026-05-07 · 10101 阅读 · 0 评论 · 0 赞
连载中 16/22

连接池:HikariCP 参数与连接风暴

连接池不是越大越好:8 核机器配 1000 连接反而更慢的数学原理,HikariCP 四个必调参数,maxLifetime 与 wait_timeout 的隐形陷阱。

#MySQL#连接池#HikariCP#maxLifetime#连接风暴
2026-05-10 · 9873 阅读 · 0 评论 · 0 赞
连载中 4/16

缓存穿透:恶意 ID 打穿 MySQL 的四道防线

请求的数据在缓存和数据库里都不存在时,缓存形同虚设。聊聊参数校验、空值缓存、布隆过滤器、限流熔断四道防线的原理与组合打法。

#Redis#缓存穿透#布隆过滤器#高可用
2026-05-16 · 9294 阅读 · 21 评论 · 287 赞