как прокси влияет на okhttp обрабатывает самозаверяющий сертификат https? - PullRequest
0 голосов
/ 30 октября 2019

Я пытался создать прозрачный снифер http / https для моего устройства разработки под Android 6.0. Я делаю это, используя собственный DNS для разрешения всего на моем прокси-хосте. Прокси-хост имел самозаверяющий CA, который я установил на устройстве как пользовательский CA. Прокси-сервер использует HTTP-заголовок Host и HTTPS SNI для определения цели вместо HTTP CONNECT и будет использовать поддельные сертификаты, выданные под самозаверяющим CA для HTTPS.

Мне показалось, что хотя большинство запросов работает нормальнонекоторые запросы HTTPS не выполнены. Я проверил документ Google и обнаружил, что Android теперь будет игнорировать пользовательский CA по умолчанию (да, я знаю, как использовать манифест конфигурации сети, чтобы приложение могло использовать пользовательский CA, это не главное). Но это не совсем имеет смысл.

Точнее говоря, эти HTTPS приходят из веб-просмотра, в котором работает User-Agent, такой как "Dalvik / 2.1.0 (....)", но те, которые приходят из okhttpу которого User-Agent как «okhttp / 3.10.0» не удалось (я нашел это с помощью fddler). Я полагаю, что встроенный в браузер шоуд дает пользователю возможность доверять самозаверяющему ЦС, поэтому он принимает пользовательский ЦС, а вот нет. Так что это все еще можно понять.

Но чего я не понимаю, так это того, что когда я использую fiddler с расшифрованным HTTPS и его самозаверяющим CA, эти okhttp-запросы тоже работают нормально. Это меня очень беспокоит. Единственное различие между этими двумя сценариями заключается в том, что для использования fiddler мне необходимо настроить соединение устройства WIFI для использования прокси. Таким образом, я предполагаю, что базовая библиотека знает, что она проксируется. Я также думаю, что HTTP CONNECT имеет место на этом. Что я хочу подтвердить, так это то, что настройки прокси заставляют okhttp принимать CA пользователя, что немного подрывает безопасность CA. И я также хотел бы знать, есть ли обходной путь для моего решения, чтобы позволить okhttp использовать мой CA.

Спасибо, что обратили на это внимание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...