会话票据密钥是什么
会话票据密钥用于加密与认证服务端下发的票据,使客户端可以在后续连接中复用会话,省去完整握手。常见 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 字节 | 加密票据内容 |
轮换时先加新密钥再删旧密钥,避免正在复用的会话失败;多实例部署必须保证密钥内容一致,否则请求落到不同节点时会话恢复会失效。
轮换步骤
- 生成新密钥文件并设好权限
- 在所有实例上同时加入新密钥并保留旧密钥
- 重载服务,观察复用率与错误率
- 确认无异常后再移除最旧的密钥文件
密钥文件长度必须精确匹配要求,长度不对会导致服务启动失败;生成后立即核对字节数,比事后排查报错更省时间。