It seems that your example is more complicated than it needs to be.
For a more concrete example, GitHub Pages (*.github.io
) allows domain fronting.
Let's say that there is a site evil.github.io
that is being blocked. This means that when you connect to the server and start the handshake, if the SNI of that handshake is evil.github.io
, then your connection is reset. What you do, then, is instead handshake with the server for good.github.io
, which does not get blocked, and then in the established TLS connection you ask the server for evil.github.io
instead.
You can try it yourself, for example with Curl:
curl -s -H "Host: evil.github.io" -H "Connection: close" "https://good.github.io/" -v
You will see that the TLS handshake happens for good.github.io
(which matches the wildcard certificate that GH Pages uses), but the content that gets returned is from evil.github.io
.
When the censor encounters this situation, they have the option to block good.github.io
as well. The problem with this approach is that (for Github Pages specifically, and for many other domain-frontable sites) it's easy to create a good2.github.io
, so they will be forced to accept the collateral damage of blocking all of github.io
.
This collateral damage is the reason why domain fronting is usually talked about in the context of CDNs: by its nature, a CDN's content is embedded on many different sites. If you block a single domain on the CDN, you can still get at the content using domain fronting, and if you block the whole CDN you will also break all those other sites.
Whether such collateral damage is acceptable will depend on both the attitude of the censor, as well as the business interests of the CDN provider: for example, Google, AWS, Cloudflare, Akamai and Azure have disabled domain fronting using their services. Google and AWS specifically have done so after Roskomnadzor (RKN), the Russian censorship organization, had tried to block Telegram which was using domain fronting using those domains. RKN blocked many domains, disrupting online banking and mobile apps that used Google/AWS for their normal operations -- this was likely the reason why they disabled it. See https://en.wikipedia.org/wiki/Domain_fronting#Disabling for more on this.