До Андроид 6.0 приложения работали с пользовательскими сертификатами наравне с системными. Можно было анализировать зашифрованный трафик своего телефона и почти любых приложений.
Начиная с Андроид 7.1, пользовательские сертификаты утратили свою равнозначность с системными. Если на устройстве есть root права, можно самостоятельно поместить файл сертификата в систему.
Простой способ: 1) Установить любой сертификат как пользовательский 2) Найти его в папке /data/misc/user/0/cacerts-added/ (путь может отличаться в разных устройствах) 3) Переместить файл сертификата (заканчивается на .0) в папку /system/etc/security/cacerts/ 4) Выставить права 644 5) Перезагрузить устройство
Альтернативный способ: 1) Нам нужно создать .pem файл, в котором сертификат будет иметь следующий вид
В Windows это можно сделать в certmgr.msc, нажав "копировать в файл" в выбранном открытом сертификате, и сохранив его в формате base64 2) Нужно определить имя скачанного или экспортированного файла. Для этого потребуется линукс и команда openssl x509 -inform PEM -subject_hash_old -in ПУТЬ_К_ФАЙЛУ.pem | head -1 В ответ система выдаст строчку (для нашего примера - это 8794b4e3), которую мы будем использовать как имя. 3) Переименовываем наш .pem сертификат в имя из консоли и добавляем .0, получаем файл 8794b4e3.0 4) Отправляем файл сертификата (заканчивается на .0) на устройство, в папку /system/etc/security/cacerts/ 5) Выставить права 644 6) Перезагрузить устройство
Некоторые приложения имеют в своем составе встроенные сертификаты и игнорируют системные! Для анализа трафика таких приложений, их необходимо пересобрать с включением в пакет нужного самоподписанного сертификата!
Обладатели рут прав через Magisk, могут поставить модуль Move Certificates, позволяющий перемещать сертификаты автоматически.