首页/安全/加密与证书速查/会话票据密钥管理
TLS 与 HTTPS60 条

会话票据密钥管理

会话票据密钥用于加密/认证票据;nginx 通过 ssl_session_ticket_key 加载 48 字节密钥文件(16 字节名称 + 16 字节 HMAC 密钥 + 16 字节 AES 密钥),需按周期轮换。

加密与证书速查安全更新于 2026-10-13

会话票据密钥是什么

会话票据密钥用于加密与认证服务端下发的票据,使客户端可以在后续连接中复用会话,省去完整握手。常见 Web 服务器以固定长度的密钥文件承载它:文件由名称段、消息认证密钥段与对称加密密钥段三部分组成,总长 48 字节。这类密钥需要按周期轮换,并在多实例之间保持一致。

基本信息

文件长度48 字节
组成16 字节名称、16 字节认证密钥、16 字节加密密钥
轮换方式配置多个文件,首位用于加密新票据,其余用于解密旧票据
权限600,属主为服务运行用户

典型使用场景

  • 开启会话复用以降低握手开销
  • 多实例集群:保证各节点密钥一致才能复用会话
  • 按期轮换票据密钥,降低密钥长期不变的暴露风险
  • 迁移或扩容:新节点加入时同步密钥
  • 排错:会话复用失效时确认密钥是否一致

生成票据密钥并配置

生成票据密钥并配置
openssl rand 48 > /etc/nginx/ticket.key.202610     # 生成长度正确的密钥文件
chmod 600 /etc/nginx/ticket.key.202610
stat -c %s /etc/nginx/ticket.key.202610             # 核对长度必须为 48
# 配置中按顺序列出:第一个用于加密新票据,后续用于解密旧票据

分段与作用

分段长度作用
名称段16 字节标识使用哪一份密钥
认证密钥段16 字节校验票据完整性
加密密钥段16 字节加密票据内容
轮换时先加新密钥再删旧密钥,避免正在复用的会话失败;多实例部署必须保证密钥内容一致,否则请求落到不同节点时会话恢复会失效。

轮换步骤

  • 生成新密钥文件并设好权限
  • 在所有实例上同时加入新密钥并保留旧密钥
  • 重载服务,观察复用率与错误率
  • 确认无异常后再移除最旧的密钥文件
密钥文件长度必须精确匹配要求,长度不对会导致服务启动失败;生成后立即核对字节数,比事后排查报错更省时间。

易错点

  • 密钥文件放进镜像或代码仓库,长期不变,失去轮换意义
  • 只在一台实例上生成密钥,导致集群内会话恢复失败
  • 轮换时先删旧密钥再加新密钥,造成正在复用的会话失败
  • 文件长度不符合要求,服务启动或重载直接报错
  • 权限设置过宽,其他用户可读票据密钥

数据来源与参考

  • nginx 官方文档(ssl_session_ticket_key)
  • RFC 5077
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌