首页 > 解决方案 > TLS 1.3 早期数据放在哪里 $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 文档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 { }

标签: sslnginxopenssltls1.3

解决方案


您应该将 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/


推荐阅读