TLS 1.3 早期数据 $ssl_early_data 放在哪里

TLS 1.3 early data where to put $ssl_early_data

我已将 ssl_early_data on; 设置为我的 nginx.conf(在 http { } 内)并根据这些命令,

echo -e "HEAD / HTTP/1.1\r\nHost: $host\r\nConnection: close\r\n\r\n" > request.txt
openssl s_client -connect example.tld:443 -tls1_3 -sess_out session.pem -ign_eof < request.txt
openssl s_client -connect example.tld:443 -tls1_3 -sess_in session.pem -early_data request.txt

它确实工作正常。
根据nginx documentation (https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data),建议设置proxy_set_header Early-Data $ssl_early_data;.
我的问题是:我在哪里设置这个? ssl_early_data on; 之后,还在 http { }?

里面

您应该将 Early-Data 传递给您的应用程序。所以你必须有类似的东西:

http {

   ...
   # Enabling 0-RTT
   ssl_early_data on;
   ...

   server {
      ...
      # Passing it to the upstream
      proxy_set_header Early-Data $ssl_early_data;
   }

}

否则,您的应用程序容易受到重放攻击:https://blog.trailofbits.com/2019/03/25/what-application-developers-need-to-know-about-tls-early-data-0rtt/