$ssl_early_data
变量 $ssl_early_data 指示在 SSL/TLS 连接中是否已接收到早期数据。 — NGINX Core (HTTP)
$ssl_early_data
NGINX Core (HTTP)
说明
在 NGINX 中,当服务器配置为支持 TLS 1.3 时会使用 $ssl_early_data 变量,TLS 1.3 支持一种称为 "0-RTT"(或早期数据)的特性。该特性允许客户端在 TLS 握手完全完成之前发送数据,从而实现更快的通信,但同时存在一些安全方面的考量。当收到早期数据时,$ssl_early_data 的值被设置为 "1";否则设置为 "0"。 该变量在确定如何处理可能使用早期数据发送的请求时特别有用。例如,依赖早期数据可能会引入如重放攻击等风险,因此用户必须实现必要的逻辑来防范此类漏洞。NGINX 可以在条件配置中利用该变量的值,根据请求是否使用了早期数据来应用不同的限制或响应。
配置示例
server {
listen 443 ssl;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
# Check if early data was received
if ($ssl_early_data) {
return 400; # Reject early data requests if needed
}
# Normal processing for regular requests
proxy_pass http://backend;
}
}子系统
http可缓存
否上下文
http, server, location, if⚠
在未启用 TLS 1.3 支持的情况下使用 $ssl_early_data 将始终返回 0(无早期数据)。
⚠
如果在未实施适当安全措施的情况下认为早期数据处理是安全的,可能会导致漏洞。