Connection coalescing breaks the Internet
Connection coalescing is the dumbest idea to ever reach RFC status. I can’t believe nobody stopped it before it got this far.
It breaks everything.
Thus starts my latest opinion post.
What is connection coalescing?
It’s specified in the RFC for HTTP/2 as connection reuse, but tl;dr: If the IP address of host A and B overlap, and host A presents a TLS cert that also includes B (via explicit CN/SAN or wildcard cert), then the client is allowed to send HTTP requests directed to B on the connection that was established to A.
Why did they do that?
To save roundtrips and TLS handshakes. It seems like a good idea if you don’t think about it too much.
Why does it break everything?
I’ll resist just yelling “layering violation”, because that’s not helpful. Instead I’ll be more concrete.
Performing connection coalescing is a client side (e.g. browser) decision. But it implicitly mandates a very strict server architecture. It assumes that ALL affected hostnames are configured exactly the same in many regards, and indeed that the HTTP server even has the config for all hostnames.
Concrete things that this breaks:
- The server can’t have a freestanding TLS termination layer, Continue reading