Хорошо, я собираюсь опубликовать здесь только то, как Я думаю, что SSL-прокси с Чарльзом работает , но у меня нет твердой основы, чтобы гарантировать, что мой ответ правильный. На самом деле было бы здорово, если бы кто-то из команды Charles Proxy мог помочь нам в этом.
Дело в том, что когда ваше приложение выполняет HTTPS-запрос к сайту, оно сначала должно пройти через прокси-сервер Charles (не забывайте, что это прокси-сервер!). В этот момент Чарльз подключается к сайту https, используя открытый ключ сайта для шифрования и дешифрования данных, как если бы это был обычный браузер или приложение.
Таким образом, в данный момент Чарльз получает ответ от вашего https-запроса в незашифрованном виде, и его необходимо передать в ваше приложение, но ваше приложение ожидает зашифрованные данные, поэтому Чарльз должен снова зашифровать его, чтобы ваше приложение (т. Е. Ваш браузер) не жалуется на незашифрованный HTTPS-ответ. Для этого Чарльз использует свой собственный сертификат (пара открытый + закрытый ключ), шифрует ваши данные и отправляет их обратно в ваше приложение.
Наконец, ваше приложение получает эти данные в зашифрованном виде от Чарльза. Ваше приложение не будет знать, как его расшифровать, если вы не предоставите ему открытый ключ сертификата (это делается путем «установки» сертификата на ваше приложение / браузер / устройство Android / и т. Д.).
Вот как я думаю, что все прокси SSL работает с Чарльзом.
Было бы здорово, если бы кто-то мог поспособствовать этому ответу!