pozadie
Pri použití softvéru na zachytávanie paketov (napríklad Charles) na zachytenie https požiadavky APP, Android aj Charles správne nainštalovali certifikát, ale zachytenie paketov zlyhá a hlási sa chyba:
Klientský SSL handshake zlyhal: Pri spracovaní certifikátu (certificate_unknown) nastal neznámy problém
Príčina
Po Android7.0 sa certifikát CA, ktorý bol do systému pridaný predvolene, nepovažuje za dôveryhodného:
Aby sme poskytli konzistentnejší a bezpečnejší zážitok v rámci Android ekosystému, počnúc Android Nougat, kompatibilné zariadenia dôverujú iba štandardizovaným systémovým CA udržiavaným v AOSP .
Odkaz na dokumentáciu:https://android-developers.googl ... ed-certificate.html
To znamená, že pre aplikácie založené na SDK24 a vyšších, aj keď máte nainštalovaný certifikát nástroja na zachytávanie paketov vo vašom telefóne, nebudete schopní zachytávať https požiadavky.
riešenie
1. Oficiálne riešenie (vyžaduje úpravu kódu)
Oficiálna dokumentácia:https://developer.android.google ... ecurity-config.html Podrobná ukážka:https://blog.csdn.net/mrxiagc/article/details/75329629
2. Nainštalovať certifikát softvéru na zachytávanie paketov ako systémový certifikát (vyžaduje sa ROOT)
Adresár systémových certifikátov: /system/etc/security/cacerts/
Konvencia pomenovania pre každý certifikát je nasledovná:
.<Certificate_Hash> <Number> Názov súboru je hash hodnota, zatiaľ čo prípona je číslo.
Názov súboru je možné vypočítať nasledujúcim príkazom:
Napríklad, ak je hodnota hashu vypočítaná dvoma certifikátmi rovnaká, potom možno číslo prípony jedného certifikátu nastaviť na 0 a číslo prípony druhého certifikátu na 1
Kroky:
Použite vyššie uvedený príkaz na výpočet hash hodnoty certifikátu softvéru na zachytávanie paketov, premenujte ho a skopírujte do adresára systémových certifikátov
V tejto chvíli by ste mali vidieť svoj novo pridaný certifikát v záložke Systém v nastaveniach - > Bezpečnosť - > Šifrovanie a prihlasovacie údaje - > Dôveryhodné prihlasovacie údaje
|