Search code examples
google-chromehttp3

Does Chrome support HTTP/3 over a port other than 443?


I am experimenting with enabling HTTP/3 support on my webserver. In my specific setup, it will not be possible to use UDP port 443, since I have different websites hosted by different webservers on the same public IP address, and I am not aware of any reverse proxy that supports TLS passthrough for HTTP/3.

I have enabled HTTP/3 on port 44113. The service is advertised using the HTTP header Alt-Svc: h3=":44113"; ma=2592000,h3-29=":44113"; ma=2592000. Firefox successfully recognizes the service and makes any subsequent requests using HTTP/3. However, Chrome sticks with HTTP/2. When I temporarily moved HTTP/3 to port 443, it suddenly worked in Chrome as well.

Is this behaviour documented anywhere? Are there any cases in which HTTP/3 works over another port than 443 in Chrome?


Solution

  • As answered on the chromium-discuss mailing list, Chromium supports HTTP/3 only on UDP ports < 1024.

    The reason can be found in the source code: Some shared Unix webservers allow individual users to publish their public_html directory through HTTP and also to run custom services on ports >= 1024. A malicious user could set an Alt-Svc header in their published directory to hijack future HTTP/3 connections to the webserver.