The lock knows not who holds the keyThe lock knows not who holds the bolt-cutter
TrustManager
WebViewHttpURLConnectionandroid:networkSecurityConfig on <application><meta-data>build.gradlenew TrustManagerBuilder().withManifestConfig(ctxt)TrustManagerBuilder into your HTTP client<domain-config>: rules for a particular domain/set of sub-domains<base-config>: baseline rules, if any<debug-overrides>: rules only for debuggable buildsraw resource with the root certificate of that authority<certificates src="@raw/..."> and <certificates src="system"> to configuration<certificates src="user"> for user-defined certificates (not supported in backport)raw resource with the root certificate of that authority<certificates src="@raw/..."> without anything else to configuration<certificates src="system"> blocks all default CAs<pin-set> element in configuration<pin> with certificate hash via openssl x509 -in server.crt -pubkey -noout | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64cleartextTrafficPermitted="false" on a configuration element to ban for that scopeandroid:usesCleartextTraffic="false" on <application><debug-overrides>withConfig(), supplying a Context and the XML resource IDStrictMode with detectCleartextNetwork(), on Android 6.0+StrongBuilder implementations to configure popular HTTP client APIs
HttpURLConnection