Может ли закрепление SSL быть применено к части кода приложения? - PullRequest
0 голосов
/ 07 июня 2019

Я знаю (пожалуйста, поправьте меня, если я ошибаюсь), что SSL-закрепление состоит в жестком кодировании открытого ключа сервера в приложении, то есть во время протокола рукопожатия, когда клиент получает сообщение hello server, он сравнивает открытый ключ сервера с ключом в коде приложения, если они не совпадают, клиент завершит аутентификацию.

Я пытаюсь понять, как работает закрепление сертификата? Вот что я делаю:

Я передаю трафик из приложения Android на мой сервер. Приложение постоянно отправляет запросы на сервер, чтобы оно могло обновлять свое содержимое, но эти запросы автоматически выдаются приложением, и mimtproxy перехватывает их.

Теперь, когда я отправляю запрос из приложения, mitmproxy не перехватывает его. Перехватывает только те, которые были выданы автоматически приложением

То, что я пытался сделать:

  1. Я рутировал свое андроид устройство, и mimtproxy по-прежнему не может перехватить трафик.
  2. Я установил сертификат mitmproxy в корневом хранилище на устройстве Android.

Топология, которую я использую:

Client (Android 6.0.1) --> proxy (mitmproxy running on linux) --> server

Согласно проведенному мною исследованию о закреплении сертификата, клиент завершает диалог, как только получает открытый ключ, который он не доверяет. Однако в моем случае прокси-сервер продолжает получать запросы, которые приложение отправляет автоматически, что приводит меня к моему вопросу: может ли прикрепление сертификата применяться к частям кода приложения? например, когда клиент отправляет определенный запрос, мы проверяем открытый ключ, который он получил, и игнорируем его для других запросов?

Заранее спасибо.

...