Android KitKat'tan önce, yeni sertifikaları yüklemek için cihazınızı köklendirmeniz gerekir.
Android KitKat'tan (4.0) Nougat'a (7.0) kadar bu mümkün ve kolaydır. Köklenmemiş cihazıma Charles Web Hata Ayıklama Proxy sertifikasını yükledim ve SSL trafiğini başarıyla algıladım.
Http://wiki.cacert.org/FAQ/ImportRootCert'den alıntı
Android sürüm 4.0'dan önce, Android sürüm Gingerbread & Froyo ile, tüm CA ('sistem') sertifikalarının varsayılan olarak güvenildiği güven deposunu içeren tek bir salt okunur dosya (/system/etc/security/cacerts.bks) vardı. Android. Hem sistem uygulamaları hem de Android SDK ile geliştirilen tüm uygulamalar bunu kullanır. CAcert sertifikalarını Android Gingerbread, Froyo, ... üzerine yüklemek için bu talimatları kullanın.
Android 4.0'dan (Android ICS / 'Ice Cream Sandwich', Android 4.3 'Jelly Bean' ve Android 4.4 'KitKat') başlayarak, sisteme güvenilen sertifikalar '/ system / etc / klasöründeki (salt okunur) sistem bölümünde yer almaktadır. güvenlik / 'ayrı dosyalar olarak. Bununla birlikte, kullanıcılar artık '/ data / misc / keychain / certs-added' içinde saklanacak olan kendi 'kullanıcı' sertifikalarını kolayca ekleyebilirler.
Sistem tarafından yüklenen sertifikalar, Android cihazında Ayarlar -> Güvenlik -> Sertifikalar -> 'Sistem' bölümünde yönetilebilirken, kullanıcının güvenilen sertifikaları buradaki 'Kullanıcı' bölümünde yönetilir. Kullanıcı tarafından güvenilen sertifikalar kullanılırken Android, Android cihaz kullanıcısını ek güvenlik önlemleri uygulamaya zorlar: Kullanıcı tarafından sağlanan sertifikalar kullanıldığında cihazın kilidini açmak için bir PIN kodu, bir desen kilidi veya şifre kullanılması zorunludur.
CAcert sertifikalarını 'kullanıcı tarafından güvenilen' sertifikalar olarak yüklemek çok kolaydır. Yeni sertifikaları 'güvenilir sistem' sertifikaları olarak yüklemek daha fazla çalışma gerektirir (ve kök erişimi gerektirir), ancak Android kilit ekranı gereksinimini ortadan kaldırma avantajına sahiptir.
Android N'den itibaren biraz daha zorlaşıyor, Charles proxy web sitesinden şu alıntıya bakın :
Android N'den itibaren, Charles SSL Proxying tarafından oluşturulan SSL sertifikalarına güvenmesi için uygulamanıza yapılandırma eklemeniz gerekir. Bu, SSL Proxying'i yalnızca kontrol ettiğiniz uygulamalarla kullanabileceğiniz anlamına gelir.
Uygulamanızı Charles'a güvenecek şekilde yapılandırmak için uygulamanıza bir Ağ Güvenliği Yapılandırma Dosyası eklemeniz gerekir. Bu dosya, sistem varsayılanını geçersiz kılarak uygulamanızın kullanıcı tarafından yüklenen CA sertifikalarına (örneğin Charles Kök Sertifikası) güvenmesini sağlar. Üretim yapılarının varsayılan güven profilini kullanması için bunun yalnızca uygulamanızın hata ayıklama yapılarında geçerli olduğunu belirtebilirsiniz.
Uygulamanıza res / xml / network_security_config.xml dosyası ekleyin:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Ardından, uygulamanızın manifest dosyasında aşağıdaki gibi bu dosyaya bir referans ekleyin:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config">
</application>
</manifest>