Установка корневого сертификата системы

Этот интерфейс используется для установки корневого сертификата системного уровня в вашу систему Android и совместим со всеми версиями Android. У вас может возникнуть путаница относительно того, что такое корневой сертификат и что такое сервисный сертификат FIRERPA. Сервисный сертификат FIRERPA используется для шифрования трафика между FIRERPA и вами, в то время как корневой сертификат, о котором здесь идет речь, — это встроенный в систему Android корневой сертификат. Этот сертификат используется для шифрования и дешифрования трафика, связанного с HTTPS и другими протоколами в системе. Если вы знакомы с перехватом пакетов (packet sniffing), то этот корневой сертификат — это именно тот сертификат, который используется для перехвата трафика. Вы можете использовать интерфейс из этой главы вместе с интерфейсом настройки прокси для реализации атаки «человек посередине» (man-in-the-middle) и перехвата трафика. Конечно, вы также можете использовать наш готовый скрипт startmitm.py. Здесь мы просто знакомим вас с реализацией этой базовой функции.

Подготовка

Убедитесь, что у вас готов сертификат от Fiddler или mitmproxy. Для mitmproxy следует использовать сертификат mitmproxy-ca-cert.pem. Для Fiddler это может быть файл в формате crt, который вы можете экспортировать из Fiddler. Просто укажите путь к этому файлу в качестве параметра, не беспокоясь о преобразовании имен файлов. Чтобы не тратить лишнее время, мы рекомендуем использовать mitmproxy. Если вы используете Charles или подобные инструменты, мы не можем гарантировать, что вы сможете выполнить настройку с первого раза, так как конфигурация таких приложений более сложна, и вам может потребоваться понимание различных типов настроек для правильной конфигурации HTTPS-перехвата (man-in-the-middle). Если вы все же настаиваете на использовании Charles, рекомендуется использовать его SOCKS5 в качестве протокола прокси.

Установка корневого сертификата

Имея путь к подготовленному файлу сертификата, вы можете напрямую использовать следующий интерфейс для установки корневого сертификата mitmproxy. После однократной установки он будет сохранен навсегда, и повторная установка не потребуется.

d.install_ca_certificate(cert_path)

Удаление корневого сертификата

Вы можете вызвать следующий код для удаления пользовательского корневого сертификата, установленного на устройстве. Мы не рекомендуем часто устанавливать и удалять сертификаты; если в этом нет необходимости, вы можете не вызывать этот интерфейс.

d.uninstall_ca_certificate(cert_path)

Полный код приведен ниже (мы не будем повторно создавать экземпляр устройства d)

import os

# Составляем путь к файлу mitmproxy-ca-cert.pem
HOME = os.path.expanduser("~")
cert_path = os.path.join(HOME, ".mitmproxy", "mitmproxy-ca-cert.pem")
# На примере mitmproxy, используйте следующий код для установки сертификата для перехвата трафика
d.install_ca_certificate(cert_path)

# Используйте следующий код для удаления сертификата
d.uninstall_ca_certificate(cert_path)

Этот интерфейс для установки и удаления сертификатов является универсальным. Вы можете использовать его для установки любого сертификата, требуемого приложением. Вы также можете использовать его для установки сертификатов, требуемых Fiddler/Charles, просто указав путь к файлу. Если вы собираетесь перехватывать трафик, то далее вы можете обратиться к разделу Настройка прокси и установить в качестве прокси-сервера адрес, который прослушивает ваше приложение для перехвата трафика (man-in-the-middle).