Antes do Android KitKat, você precisa fazer o root no seu dispositivo para instalar novos certificados.
Do Android KitKat (4.0) até o Nougat (7.0) , é possível e fácil. Consegui instalar o certificado Charles Web Debbuging Proxy no meu dispositivo não-rooteado e detectar com êxito o tráfego SSL.
Extrato de http://wiki.cacert.org/FAQ/ImportRootCert
Antes da versão 4.0 do Android, com a versão Gingerbread & Froyo, havia um único arquivo somente leitura (/system/etc/security/cacerts.bks) contendo o armazenamento confiável com todos os certificados de CA ('sistema') confiáveis por padrão em Android. Os aplicativos do sistema e todos os aplicativos desenvolvidos com o Android SDK usam isso. Siga estas instruções para instalar certificados CAcert no Android Gingerbread, Froyo, ...
A partir do Android 4.0 (Android ICS / 'Ice Cream Sandwich', Android 4.3 'Jelly Bean' e Android 4.4 'KitKat'), os certificados confiáveis do sistema estão na partição do sistema (somente leitura) na pasta '/ system / etc / segurança / 'como arquivos individuais. No entanto, os usuários agora podem adicionar facilmente seus próprios certificados de 'usuário', que serão armazenados em '/ data / misc / keychain / certs-added'.
Os certificados instalados pelo sistema podem ser gerenciados no dispositivo Android na seção Configurações -> Segurança -> Certificados -> 'Sistema', enquanto os certificados confiáveis do usuário são gerenciados na seção 'Usuário'. Ao usar certificados confiáveis do usuário, o Android forçará o usuário do dispositivo Android a implementar medidas de segurança adicionais: o uso de um código PIN, um bloqueio de padrão ou uma senha para desbloquear o dispositivo é obrigatório quando os certificados fornecidos pelo usuário são usados.
A instalação de certificados CAcert como certificados de 'confiança do usuário' é muito fácil. A instalação de novos certificados como certificados 'confiáveis do sistema' exige mais trabalho (e requer acesso root), mas tem a vantagem de evitar o requisito de tela de bloqueio do Android.
A partir do Android N, fica um pouco mais difícil, veja este extrato no site de proxy da Charles :
No Android N, você precisa adicionar configurações ao seu aplicativo para que ele confie nos certificados SSL gerados pelo Charles SSL Proxying. Isso significa que você só pode usar proxy SSL com aplicativos que você controla.
Para configurar seu aplicativo para confiar em Charles, você precisa adicionar um arquivo de configuração de segurança de rede ao seu aplicativo. Esse arquivo pode substituir o padrão do sistema, permitindo que seu aplicativo confie nos certificados de CA instalados pelo usuário (por exemplo, o certificado raiz Charles). Você pode especificar que isso se aplique apenas nas construções de depuração do seu aplicativo, para que as construções de produção usem o perfil de confiança padrão.
Adicione um arquivo res / xml / network_security_config.xml ao seu aplicativo:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Em seguida, adicione uma referência a este arquivo no manifesto do seu aplicativo, da seguinte maneira:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>