ozadje
Ko uporabljamo programsko opremo za zajem paketov (kot primer Charles) za zajem https zahteve APP, sta tako Android kot Charles pravilno namestila potrdilo, vendar zajem paketa ne uspe in se pojavi napaka:
Odjemalčev SSL handshake ni uspel: Pri obdelavi certifikata (certificate_unknown) je prišlo do neznane težave.
Vzrok
Po Android7.0 certifikat CA, ki je privzeto dodan v sistem, ni več zaupanja vreden:
Za zagotavljanje bolj dosledne in varnejše izkušnje v celotnem Android ekosistemu, začenši z Android Nougat, združljive naprave zaupajo le standardiziranim sistemskim CA, ki jih vzdržuje AOSP .
Povezava do dokumentacije:https://android-developers.googl ... ed-certificate.html
To pomeni, da za aplikacije, ki temeljijo na SDK24 in višjih, tudi če imate na telefonu nameščen certifikat orodja za zajem paketov, ne boste mogli zajeti https zahtev.
rešitev
1. Uradna rešitev (potrebna je sprememba kode)
Uradna dokumentacija:https://developer.android.google ... ecurity-config.html Podrobna demonstracija:https://blog.csdn.net/mrxiagc/article/details/75329629
2. Namestitev certifikata programske opreme za zajem paketov kot sistemski certifikat (potrebna je ROOT)
Direktorij sistemskih certifikatov: /system/itd/security/cacerts/
Konvencija poimenovanja za vsak certifikat je naslednja:
.<Certificate_Hash> <Number> Ime datoteke je zgoščena vrednost, medtem ko je pripona številka.
Ime datoteke lahko izračunamo z naslednjim ukazom:
Na primer, če je vrednost zgoščene vrednosti, izračunana z dvema certifikatoma, enaka, lahko številko pripone enega certifikata nastavimo na 0, številko pripone drugega certifikata pa na 1
Koraki:
Uporabite zgornji ukaz za izračun zgoščevalne vrednosti certifikata programske opreme za zajem paketov, ga preimenujte in kopirajte v imenik sistemskih certifikatov
Trenutno bi morali svoj novo dodani certifikat videti v zavihku System v nastavitvah - > Varnost - > Šifriranje in poverilnice - > zaupanja vredni poverilnici
|