Vor Android KitKat müssen Sie Ihr Gerät rooten, um neue Zertifikate zu installieren.
Von Android KitKat (4.0) bis Nougat (7.0) ist es möglich und einfach. Ich konnte das Charles Web Debbuging Proxy-Zertifikat auf meinem nicht gerooteten Gerät installieren und den SSL-Verkehr erfolgreich abhören.
Auszug aus http://wiki.cacert.org/FAQ/ImportRootCert
Vor der Android-Version 4.0 gab es mit der Android-Version Gingerbread & Froyo eine einzige schreibgeschützte Datei (/system/etc/security/cacerts.bks), die den Trust Store mit allen CA-Zertifikaten ('system') enthielt, denen standardmäßig vertraut wurde Android. Dies wird sowohl von System-Apps als auch von allen mit dem Android SDK entwickelten Anwendungen verwendet. Verwenden Sie diese Anweisungen zum Installieren von CAcert-Zertifikaten auf Android Gingerbread, Froyo, ...
Ab Android 4.0 (Android ICS / 'Ice Cream Sandwich', Android 4.3 'Jelly Bean' und Android 4.4 'KitKat') befinden sich vertrauenswürdige Systemzertifikate auf der (schreibgeschützten) Systempartition im Ordner '/ system / etc / Sicherheit / 'als einzelne Dateien. Benutzer können jetzt jedoch problemlos ihre eigenen Benutzerzertifikate hinzufügen, die in "/ data / misc / keychain / certs-add" gespeichert werden.
Vom System installierte Zertifikate können auf dem Android-Gerät im Abschnitt "Einstellungen" -> "Sicherheit" -> "Zertifikate" -> "System" verwaltet werden, während die vom Benutzer vertrauenswürdigen Zertifikate dort im Abschnitt "Benutzer" verwaltet werden. Bei Verwendung von vertrauenswürdigen Benutzerzertifikaten zwingt Android den Benutzer des Android-Geräts, zusätzliche Sicherheitsmaßnahmen zu implementieren: Die Verwendung eines PIN-Codes, einer Mustersperre oder eines Kennworts zum Entsperren des Geräts ist obligatorisch, wenn vom Benutzer bereitgestellte Zertifikate verwendet werden.
Das Installieren von CAcert-Zertifikaten als "User Trusted" -Zertifikate ist sehr einfach. Das Installieren neuer Zertifikate als "System Trusted" -Zertifikate erfordert mehr Arbeit (und Root-Zugriff), hat jedoch den Vorteil, dass die Android-Sperrbildschirmanforderung vermieden wird.
Ab Android N wird es etwas schwieriger, siehe diesen Auszug von der Charles Proxy-Website :
Ab Android N müssen Sie Ihrer App eine Konfiguration hinzufügen, damit sie den von Charles SSL Proxying generierten SSL-Zertifikaten vertraut. Dies bedeutet, dass Sie SSL Proxying nur mit Apps verwenden können, die Sie steuern.
Um Ihre App so zu konfigurieren, dass sie Charles vertraut, müssen Sie Ihrer App eine Netzwerksicherheits-Konfigurationsdatei hinzufügen. Diese Datei kann den Systemstandard überschreiben und es Ihrer App ermöglichen, vom Benutzer installierten CA-Zertifikaten (z. B. dem Charles Root-Zertifikat) zu vertrauen. Sie können angeben, dass dies nur in Debug-Builds Ihrer Anwendung gilt, sodass Produktions-Builds das Standard-Vertrauensprofil verwenden.
Fügen Sie Ihrer App eine Datei res / xml / network_security_config.xml hinzu:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Fügen Sie dann wie folgt einen Verweis auf diese Datei im Manifest Ihrer App hinzu:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>