Avant Android KitKat, vous devez rooter votre appareil pour installer de nouveaux certificats.
Depuis Android KitKat (4.0) jusqu'à Nougat (7.0), c'est possible et facile. J'ai pu installer le certificat Charles Web Debbuging Proxy sur mon appareil non rooté et renifler avec succès le trafic SSL.
Extrait de http://wiki.cacert.org/FAQ/ImportRootCert
Avant la version 4.0 d'Android, avec la version Android Gingerbread & Froyo, il y avait un seul fichier en lecture seule (/system/etc/security/cacerts.bks) contenant le magasin de confiance avec tous les certificats CA ('système') approuvés par défaut sur Android. Les applications système et toutes les applications développées avec le SDK Android l'utilisent. Utilisez ces instructions pour installer les certificats CAcert sur Android Gingerbread, Froyo, ...
À partir d'Android 4.0 (Android ICS / 'Ice Cream Sandwich', Android 4.3 'Jelly Bean' et Android 4.4 'KitKat'), les certificats de confiance système se trouvent sur la partition système (en lecture seule) dans le dossier '/ system / etc / security / 'en tant que fichiers individuels. Cependant, les utilisateurs peuvent désormais facilement ajouter leurs propres certificats «utilisateur» qui seront stockés dans «/ data / misc / keychain / certs-added».
Les certificats installés par le système peuvent être gérés sur l'appareil Android dans la section Paramètres -> Sécurité -> Certificats -> 'Système', tandis que les certificats de confiance de l'utilisateur sont gérés dans la section 'Utilisateur'. Lors de l'utilisation de certificats de confiance utilisateur, Android obligera l'utilisateur de l'appareil Android à mettre en œuvre des mesures de sécurité supplémentaires: l'utilisation d'un code PIN, d'un motif de verrouillage ou d'un mot de passe pour déverrouiller l'appareil est obligatoire lorsque des certificats fournis par l'utilisateur sont utilisés.
L'installation de certificats CAcert en tant que certificats «de confiance par l'utilisateur» est très simple. L'installation de nouveaux certificats en tant que certificats de `` confiance système '' nécessite plus de travail (et nécessite un accès root), mais elle a l'avantage d'éviter l'exigence de l'écran de verrouillage Android.
À partir d'Android N, cela devient un peu plus difficile, voir cet extrait du site Web du proxy Charles :
À partir d'Android N, vous devez ajouter une configuration à votre application afin qu'elle fasse confiance aux certificats SSL générés par Charles SSL Proxying. Cela signifie que vous ne pouvez utiliser le proxy SSL qu'avec les applications que vous contrôlez.
Pour configurer votre application pour qu'elle fasse confiance à Charles, vous devez ajouter un fichier de configuration de sécurité réseau à votre application. Ce fichier peut remplacer la valeur par défaut du système, permettant à votre application de faire confiance aux certificats CA installés par l'utilisateur (par exemple le certificat racine Charles). Vous pouvez spécifier que cela s'applique uniquement aux versions de débogage de votre application, afin que les versions de production utilisent le profil d'approbation par défaut.
Ajoutez un fichier res / xml / network_security_config.xml à votre application:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Ajoutez ensuite une référence à ce fichier dans le manifeste de votre application, comme suit:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>