ssl_early_data

在 NGINX 中,`ssl_early_data` 指令用于启用或禁用 TLS 早期数据的使用。 — NGINX HTTP Core

ssl_early_data
httpserver
语法ssl_early_data on | off;
默认值off
上下文http, server
模块NGINX HTTP Core
参数flag

说明

在 NGINX 中,`ssl_early_data` 指令控制 TLS 1.3 连接中早期数据的处理。早期数据允许客户端在启动握手后立即发送数据,这对于客户端希望在握手完成前发送请求的场景特别有用,可能降低某些操作(例如 HTTP/2 和 QUIC)的延迟。启用后,客户端可以向服务器发送最多 2^14 字节的早期数据,前提是服务器已相应配置以处理这些数据。 将该指令设置为 'on' 会启用对早期数据的接受,但应谨慎配合以防范潜在的重放攻击,因为早期数据并不能保证所发送数据的新鲜度。可能需要实施如应用层幂等性检查等策略来缓解接受早期数据带来的风险。需要注意的是,并非所有客户端都支持或能正确处理早期数据,其有效性也会根据网站的流量模式和用例而变化。 该指令可用于 `http` 和 `server` 上下文,影响连接协商方式以及 TLS 会话期间早期数据的处理方式。

配置示例

server {
    listen 443 ssl;
    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/private.key;
    ssl_early_data on;
}

启用 early data 可能会使应用程序暴露于重放攻击;请确保 idempotency 得到妥善处理。

并非所有客户端都支持 early data,如果在不同的 user agents 中广泛使用,可能会导致行为不一致。