Nginx support for TLS ALPS extension for ACCEPT_CH?

Maxim Dounin mdounin at mdounin.ru
Sat Feb 24 00:02:35 UTC 2024


Hello!

On Fri, Feb 23, 2024 at 06:09:02PM +0100, Matthias Saou wrote:

> With Chrome dropping the User-Agent in favor of Client Hints, I think
> this problem is becoming more and more common: Keep identifying client
> details and features on the first connection.

Any specific details about "dropping the User-Agent"?  From 
https://developers.google.com/privacy-sandbox/protections/user-agent 
it looks like User-Agent is still here, provides basic information 
about client browser version and platform, and it is not going 
anywhere.

> I won't go into details about Client Hints, but just mention that for
> some weird (for me) reason, it was decided that the first connection
> would always only provide limited client information, and it was up to
> the web server to ask for more to be provided in the following
> connections to the same hostname.
> 
> Apart from wasting connections and round trips by redirecting the
> client to (almost) the same URL after having requested the additional
> information, there exists a more efficient workaround, which is to
> request the additional client information during the TLS handshake, so
> that it can actually be provided during the first http request:
> https://chromestatus.com/feature/5555544540577792
> 
> This doesn't seem to be currently supported in nginx, even when the
> underlying TLS library does support ALPS extensions. There was one
> attempt made at it two years ago, which can be seen in this commit
> titled "Rough sketch of ACCEPT_CH HTTP/2 support through ALPS":
> https://github.com/amtunlimited/nginx/commit/e810900a3e4844a9476cad1a9564e0ea7acc4455
> 
> I think this something that would make sense to try and include
> directly into nginx now that Client Hints are being forced on everyone
> by Chrome and Edge. Are there any newer known efforts to support it?

Note that the draft-davidben-http-client-hint-reliability draft 
referenced in the Chrome feature (and the user-agent page) expired 
in 2021, and the same applies to the vvv-tls-alps and 
draft-vvv-httpbis-alps drafts.  This makes it highly unlikely to 
be ever supported by OpenSSL.

OTOH, if draft-davidben-http-client-hint-reliability is supported, 
the Critical-CH header should make it trivial (though potentially 
suboptimal, compared to ALPS) to request any specific hints if 
they are actually needed.  Without ALPS implemented, using the 
Critical-CH header might be a good alternative.

-- 
Maxim Dounin
http://mdounin.ru/


More information about the nginx mailing list