Android Certificate Handling
Android Certificate Handling
Android's certificate handling varies by version and manufacturer. Modern Android versions (7.0+) implement Network Security Config, allowing app-specific certificate policies. System-wide CA installation requires root access on newer versions.
Android Network Security Config:
<!-- res/xml/network_security_config.xml -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<!-- Allow cleartext traffic for local development -->
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">10.0.2.2</domain>
</domain-config>
<!-- Pin certificates for production -->
<domain-config>
<domain includeSubdomains="true">api.example.com</domain>
<pin-set expiration="2024-12-31">
<pin digest="SHA-256">base64==</pin>
<pin digest="SHA-256">backup64==</pin>
</pin-set>
</domain-config>
<!-- Trust user-added CAs for debug builds -->
<debug-overrides>
<trust-anchors>
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>