GFW now can reset TLS connections by detecting the Server Name Indication part in TLS Client Hello packet.
The way to bypass the restriction is to remove the SNI part in Client Hello packet.
However, Android does not support HTTP proxy directly.
So, set up a local reverse proxy seems a good choice (we can use a fake address and redirect requests in VPNService).
Both of the methods requires a self-signed certificate.
Solutions
nginx - Cross Compile for armeabi-v7a/aarch64 - Need to generate Configuration dynamically
undertow - Only support Android N+, or modifications required (maybe XNIO)
Notes
Apps need to be modified to trust user certs >= Android N
Two methods has been tested and work excellently on my Samsung Galaxy S6 Egde+
GFW now can reset TLS connections by detecting the Server Name Indication part in TLS Client Hello packet. The way to bypass the restriction is to remove the SNI part in Client Hello packet. However, Android does not support HTTP proxy directly. So, set up a local reverse proxy seems a good choice (we can use a fake address and redirect requests in VPNService). Both of the methods requires a self-signed certificate.
Solutions
Notes
user
certs >= Android NExpress your idea below :)