тло
При використанні програмного забезпечення для захоплення пакетів (наприклад, Чарльза) для захоплення https-запиту APP, і Android, і Charles правильно встановили сертифікат, але захоплення пакетів не вдається, і повідомляється про помилку:
Клієнтське SSL-потискання не вдалося: виникла невідома проблема з обробкою сертифіката (certificate_unknown)
Причина
Після Android7.0 сертифікат CA, доданий до системи за замовчуванням, не є довіреним:
Щоб забезпечити більш послідовний і безпечний досвід у всій екосистемі Android, починаючи з Android Nougat, сумісні пристрої довіряють лише стандартизованим системним CA, що підтримуються в AOSP .
Посилання на документацію:https://android-developers.googl ... ed-certificate.html
Це означає, що для додатків на основі SDK24 і вище, навіть якщо у вас встановлений сертифікат інструменту захоплення пакетів на телефоні, ви не зможете захоплювати https-запити.
рішення
1. Офіційне рішення (потрібна модифікація коду)
Офіційна документація:https://developer.android.google ... ecurity-config.html Детальна демонстрація:https://blog.csdn.net/mrxiagc/article/details/75329629
2. Встановити сертифікат програмного забезпечення для захоплення пакетів як системний сертифікат (потрібен ROOT)
Каталог системних сертифікатів: /system/etc/security/cacerts/
Правила найменування кожного сертифіката виглядають так:
<Certificate_Hash>. <Number> Ім'я файлу є хеш-значенням, а суфікс — числом.
Ім'я файлу можна обчислити за допомогою наступної команди:
Наприклад, якщо хеш-значення, обчислене двома сертифікатами, однакове, то номер суфікса одного сертифіката можна встановити на 0, а номер суфікса іншого — на 1
Кроки:
Використовуйте наведену вище команду, щоб обчислити хеш-значення сертифіката програмного забезпечення для захоплення пакетів, перейменувати його та скопіювати до каталогу системних сертифікатів
На цей момент ви повинні бачити свій новий доданий сертифікат у вкладці System у розділі Settings - > Security - > Encryption and Credentals - > Trusted Credentals
|