Расшифровка HTTPS (Атака «Человек посередине», MitM)
Chute может расшифровывать HTTPS-трафик с помощью MitM. Дополнительную информацию см. в статье Википедии.
Генератор сертификатов поможет вам создать новый сертификат CA для отладки и сделать сертификат доверенным системой. Он доступен в Chute Mac и редакторе Chute iOS. Этот сертификат генерируется локально и сохраняется только в вашем файле профиля и системной связке ключей. Ключ нового сертификата генерируется случайным образом с использованием OpenSSL.
Вы также можете использовать существующий сертификат CA. Экспортируйте сертификат в формат PKCS#12 (.p12) с парольной фразой. Обратите внимание, что парольная фраза не может быть пустой из-за системных ограничений. Используйте команду "base64" для кодирования в строку base64 и добавьте эти настройки ниже в ваш файл конфигурации.
[MITM]
enable = true
ca-p12 = MIIJtQ.........
ca-passphrase = password
hostname = *google.com
Chute расшифровывает только трафик к хостам, объявленным здесь.
Поддерживаются подстановочные символы и ?. Обратите внимание, что ? действует как подстановочный знак, только если правило также содержит `; правило, содержащее только?`, сравнивается буквально.
- Используйте префикс - для исключения имени хоста.
- По умолчанию расшифровываются только запросы на порт 443.
- Используйте суффикс :port для разрешения других портов.
- Используйте суффикс :0 для разрешения всех портов.
Пример:
-*.apple.com: Исключает все запросы, отправленные на *.apple.com на порту 443.www.google.com: Разрешает MitM для www.google.com на порту 443.www.google.com:8080: Разрешает MitM для www.google.com на порту 8080.www.google.com:0: Разрешает MitM для www.google.com на всех портах.*: Разрешает MitM для всех имен хостов на порту 443. (Не рекомендуется)*:0: Разрешает MitM для всех имен хостов на всех портах. (Не рекомендуется)
Запись имени хоста также может включать шаблон пути после первого символа /. Сначала сопоставляется часть с хостом, чтобы решить, расшифровывается ли соединение, затем шаблон пути фильтрует, какие запросы расшифровываются и обрабатываются.
example.com/api/*: Разрешает MitM для example.com на порту 443, ограничиваясь запросами, путь которых соответствует/api/*.
Общая конфигурация может выглядеть так:
hostname = -*.apple.com, -*.icloud.com, *
Chute будет применять правила перезаписи URL, перезаписи заголовков, перезаписи тела и имитации ответов (Map Local), а также скрипты ко всем MitM-запросам.
MitM поддерживает HTTP/2: Chute предлагает клиенту как h2, так и http/1.1 через ALPN. Ключи h2 и tcp-connection раздела [MITM] из Surge принимаются в файлах конфигурации, но игнорируются.
Некоторые приложения имеют строгую политику безопасности с использованием закрепленных сертификатов или CA. Включение расшифровки для этих хостов может вызвать проблемы.
Установка и доверие CA-сертификату
Создание (или импорт) CA — лишь половина настройки: операционная система должна ещё и доверять ему. Пока не выполнены оба шага, каждый расшифровываемый сайт завершается предупреждением о сертификате. Страница сертификата в приложении показывает текущее состояние («Доверенный CA-сертификат» / «Недоверенный CA-сертификат»).
Chute iOS — в редакторе конфигурации откройте MITM → Настроить CA:
- Создать новый CA-сертификат (или Импортировать сертификат P12 для уже существующего).
- Нажмите Установить CA-сертификат в систему. Откроется страница в Safari — нажмите Установить сертификат и разрешите загрузку, затем установите загруженный профиль в Настройки → Основные → VPN и управление устройством.
- Доверьте ему: Настройки → Основные → Об этом устройстве → Доверие сертификатам — включите полное доверие для CA Chute. Именно этот шаг чаще всего пропускают: без него сертификат установлен, но не доверен, и расшифровка продолжает сбоить.
Chute Mac — в окне конфигурации откройте MitM:
- Создать новый сертификат (или Импортировать сертификат из файла PKCS#12).
- Нажмите Установить сертификат в систему. macOS запросит пароль администратора и добавит сертификат в системную связку ключей как доверенный корневой — никаких ручных действий в Связке ключей не требуется.
- Экспортировать сертификат сохраняет копию
.pemдля установки на другие устройства.
Если конкретное приложение продолжает сбоить при доверенном сертификате, оно, скорее всего, закрепляет собственные сертификаты — исключите его хосты из hostname префиксом -, а не боритесь с ним.
Опции
skip-server-cert-verify
skip-server-cert-verify = true
Не проверять сертификат удаленного хоста при выполнении MitM. Если включено, Chute будет принимать любой сертификат, представленный восходящим сервером, включая самоподписанные или недействительные сертификаты. Это полезно для сред разработки, но снижает безопасность.
[MITM]
enable = true
ca-p12 = MIIJtQ.........
ca-passphrase = password
skip-server-cert-verify = true
hostname = *google.com
Примечание по безопасности: Включение
skip-server-cert-verifyделает MitM-соединения уязвимыми для атак «человек посередине» между Chute и восходящим сервером. Включайте это только для доверенных сетей или целей разработки.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.