The lock knows not who holds the keyThe lock knows not who holds the bolt-cutter
TrustManager
WebView
HttpURLConnection
android:networkSecurityConfig
on <application>
<meta-data>
build.gradle
new 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 -base64
cleartextTrafficPermitted="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