Antes de Android KitKat, debe rootear su dispositivo para instalar nuevos certificados.
Desde Android KitKat (4.0) hasta Nougat (7.0) es posible y fácil. Pude instalar el certificado Charles Web Debbuging Proxy en mi dispositivo no rooteado y detectar con éxito el tráfico SSL.
Extracto de http://wiki.cacert.org/FAQ/ImportRootCert
Antes de la versión de Android 4.0, con la versión de Android Gingerbread & Froyo, había un único archivo de solo lectura (/system/etc/security/cacerts.bks) que contenía el almacén de confianza con todos los certificados de CA ('sistema') confiables por defecto en Androide. Tanto las aplicaciones del sistema como todas las aplicaciones desarrolladas con el SDK de Android usan esto. Use estas instrucciones para instalar certificados CAcert en Android Gingerbread, Froyo, ...
A partir de Android 4.0 (Android ICS / 'Ice Cream Sandwich', Android 4.3 'Jelly Bean' y Android 4.4 'KitKat'), los certificados confiables del sistema están en la partición del sistema (solo lectura) en la carpeta '/ system / etc / seguridad / 'como archivos individuales. Sin embargo, los usuarios ahora pueden agregar fácilmente sus propios certificados de 'usuario' que se almacenarán en '/ data / misc / keychain / certs-Added'.
Los certificados instalados en el sistema se pueden administrar en el dispositivo Android en la sección Configuración -> Seguridad -> Certificados -> 'Sistema', mientras que los certificados de confianza del usuario se gestionan en la sección 'Usuario' allí. Cuando se utilizan certificados de confianza del usuario, Android obligará al usuario del dispositivo Android a implementar medidas de seguridad adicionales: el uso de un código PIN, un patrón de bloqueo o una contraseña para desbloquear el dispositivo son obligatorios cuando se utilizan certificados proporcionados por el usuario.
Instalar certificados de CAcert como certificados de "confianza del usuario" es muy fácil. La instalación de nuevos certificados como certificados de 'sistema confiable' requiere más trabajo (y requiere acceso de root), pero tiene la ventaja de evitar el requisito de bloqueo de pantalla de Android.
Desde Android N en adelante se vuelve un poco más difícil, vea este extracto del sitio web de proxy de Charles :
A partir de Android N, debe agregar la configuración a su aplicación para que confíe en los certificados SSL generados por Charles SSL Proxying. Esto significa que solo puedes usar SSL Proxying con aplicaciones que controlas.
Para configurar su aplicación para que confíe en Charles, debe agregar un archivo de configuración de seguridad de red a su aplicación. Este archivo puede anular el valor predeterminado del sistema, lo que permite que su aplicación confíe en los certificados de CA instalados por el usuario (por ejemplo, el Certificado Charles Root). Puede especificar que esto solo se aplique a las compilaciones de depuración de su aplicación, de modo que las compilaciones de producción usen el perfil de confianza predeterminado.
Agregue un archivo res / xml / network_security_config.xml a su aplicación:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Luego agregue una referencia a este archivo en el manifiesto de su aplicación, de la siguiente manera:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>