baggrund
Når man bruger pakkefangstsoftware (tag Charles som eksempel) til at fange HTTPS-anmodningen fra APP'en, har både Android og Charles installeret certifikatet korrekt, men pakkefangsten fejler, og der rapporteres en fejl:
Client SSL-håndtryk mislykkedes: Et ukendt problem opstod under behandlingen af certifikatet (certificate_unknown)
Årsag
Efter Android7.0 er CA-certifikatet, der som standard er tilføjet systemet, ikke tillidsfuldt:
For at levere en mere ensartet og sikker oplevelse på tværs af Android-økosystemet, begyndende med Android Nougat, stoler kompatible enheder kun på de standardiserede system-CA'er, der vedligeholdes i AOSP .
Dokumentationslink:https://android-developers.googl ... ed-certificate.html
Det betyder, at for apps baseret på SDK24 og derover, selv hvis du har et certifikat fra pakkefangningsværktøjet installeret på din telefon, vil du ikke kunne fange https-forespørgsler.
opløsning
1. Officiel løsning (kodeændring påkrævet)
Officiel dokumentation:https://developer.android.google ... ecurity-config.html Detaljeret demonstration:https://blog.csdn.net/mrxiagc/article/details/75329629
2. Installer certifikatet for pakkefangstsoftwaren som et systemcertifikat (ROOT påkrævet)
Systemcertifikatmappe: /system/etc/security/cacerts/
Navngivningskonventionen for hvert certifikat er som følger:
<Certificate_Hash>. <Number> Filnavnet er en hashværdi, mens suffikset er et tal.
Filnavnet kan beregnes med følgende kommando:
For eksempel, hvis hashværdien beregnet af to certifikater er den samme, kan suffiksnummeret for det ene certifikat sættes til 0, og suffiksnummeret på det andet certifikat kan sættes til 1
Trin:
Brug ovenstående kommando til at beregne hashværdien af pakkefangstsoftwarens certifikat, omdøb det og kopier det til systemets certifikatmappe
På nuværende tidspunkt burde du kunne se dit nyligt tilføjede certifikat under Systemfanen Indstillinger - > Sikkerhed - > Kryptering & Legitimationsoplysninger - > Betroede Legitimationsoplysninger
|