Prima di Android KitKat devi eseguire il root del tuo dispositivo per installare nuovi certificati.
Da Android KitKat (4.0) fino a Nougat (7.0) è possibile e facile. Sono stato in grado di installare il certificato Charles Debbuging Proxy sul mio dispositivo non rootato e sniffare con successo il traffico SSL.
Estratto da http://wiki.cacert.org/FAQ/ImportRootCert
Prima della versione 4.0 di Android, con la versione Android Gingerbread & Froyo, esisteva un singolo file di sola lettura (/system/etc/security/cacerts.bks) contenente l'archivio sicuro con tutti i certificati CA ('sistema') considerati attendibili per impostazione predefinita su Android. Entrambe le app di sistema e tutte le applicazioni sviluppate con l'SDK di Android lo utilizzano. Utilizzare queste istruzioni sull'installazione dei certificati CAcert su Android Gingerbread, Froyo, ...
A partire da Android 4.0 (Android ICS / 'Ice Cream Sandwich', Android 4.3 'Jelly Bean' e Android 4.4 'KitKat'), i certificati di sistema fidati si trovano sulla partizione di sistema (sola lettura) nella cartella '/ system / etc / security / 'come singoli file. Tuttavia, ora gli utenti possono facilmente aggiungere i propri certificati "utente" che verranno archiviati in "/ data / misc / keychain / certs-Added".
I certificati installati dal sistema possono essere gestiti sul dispositivo Android nella sezione Impostazioni -> Sicurezza -> Certificati -> "Sistema", mentre i certificati affidabili dell'utente sono gestiti nella sezione "Utente" lì. Quando si utilizzano certificati attendibili dall'utente, Android costringerà l'utente del dispositivo Android a implementare ulteriori misure di sicurezza: l'uso di un codice PIN, un blocco modello o una password per sbloccare il dispositivo è obbligatorio quando vengono utilizzati certificati forniti dall'utente.
L'installazione dei certificati CAcert come certificati 'user trusted' è molto semplice. L'installazione di nuovi certificati come certificati di "sistema fidato" richiede più lavoro (e richiede l'accesso come root), ma ha il vantaggio di evitare i requisiti di blocco schermo Android.
Da Android N in poi diventa più piccolo, vedi questo estratto dal sito Web proxy Charles :
A partire da Android N, devi aggiungere la configurazione alla tua app per avere fiducia nei certificati SSL generati da Charles SSL Proxying. Ciò significa che puoi utilizzare il proxy SSL solo con le app che controlli.
Per configurare la tua app in modo affidabile, è necessario aggiungere un file di configurazione della sicurezza della rete alla tua app. Questo file può sovrascrivere le impostazioni predefinite del sistema, consentendo all'app di fidarsi dei certificati CA installati dall'utente (ad es. Il Charles Root Certificate). È possibile specificare che ciò si applica solo ai build di debug dell'applicazione, in modo che i build di produzione utilizzino il profilo di attendibilità predefinito.
Aggiungi un file res / xml / network_security_config.xml alla tua app:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Quindi aggiungi un riferimento a questo file nel manifest della tua app, come segue:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>