0
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