Plainnotes

TLS session ticket 的密钥轮换

2025-04-02 · 3 分钟网络

TLS 1.3 的会话恢复靠 session ticket,ticket 用服务端的密钥加密后发给客户端。如果这个密钥长期不换,拿到密钥的人可以解密之前录下的流量——这叫前向安全性失效。

nginx 默认 ssl_session_tickets on,密钥在进程启动时生成,reload 会换。所以定期 reload,或者显式设置:

ssl_session_ticket_key /etc/nginx/ticket.key;

文件里是 48 字节的随机数,建议 80 字节以兼容旧版本,定期轮换(比如每周),并保留上一个密钥以便平滑过渡。

对高安全要求的场景,可以直接关掉 ticket,只保留 session cache——代价是恢复率下降,握手变多。