在使用Android KitKat之前,您必须先植根设备才能安装新证书。
从Android KitKat(4.0)到Nougat(7.0),这都是可能且容易的。我能够在无根设备上安装Charles Web Debbuging Proxy证书,并成功嗅探SSL流量。
摘录自http://wiki.cacert.org/FAQ/ImportRootCert
在Android 4.0之前的Android版本Gingerbread&Froyo中,只有一个只读文件(/system/etc/security/cacerts.bks),其中包含信任库,默认情况下,该信任库具有所有受信任的CA(“系统”)证书安卓 系统应用程序和所有使用Android SDK开发的应用程序都使用此功能。使用以下说明在Android Gingerbread,Froyo,...上安装CAcert证书...
从Android 4.0(Android ICS /“冰淇淋三明治”,Android 4.3“果冻豆”和Android 4.4“ KitKat”)开始,系统受信任证书位于文件夹“ / system / etc /”中的(只读)系统分区上。 security /'作为单个文件。但是,用户现在可以轻松添加自己的“用户”证书,这些证书将存储在“ / data / misc / keychain / certs-added”中。
系统安装的证书可以在Android设备上的“设置”->“安全性”->“证书”->“系统”部分中进行管理,而用户信任的证书则在该设备的“用户”部分中进行管理。使用用户信任的证书时,Android会强制Android设备的用户实施其他安全措施:使用用户提供的证书时,必须强制使用PIN码,模式锁定或密码来解锁设备。
将CAcert证书安装为“用户信任”证书非常容易。将新证书安装为“系统受信任”证书需要进行更多工作(并且需要root访问权限),但是它具有避免Android锁屏要求的优点。
从Android N开始,它变得更加困难,请参阅Charles代理网站中的以下摘录:
从Android N开始,您需要向您的应用添加配置,以使其信任Charles SSL Proxying生成的SSL证书。这意味着您只能对自己控制的应用程序使用SSL代理。
为了将您的应用程序配置为信任Charles,您需要将网络安全配置文件添加到您的应用程序。该文件可以覆盖系统默认值,使您的应用程序可以信任用户安装的CA证书(例如Charles Root证书)。您可以指定此选项仅适用于应用程序的调试版本,以便生产版本使用默认的信任配置文件。
将文件res / xml / network_security_config.xml添加到您的应用中:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
然后在您的应用清单中添加对此文件的引用,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>