Keystore-virhe Android-VPN:ssä: rekisteröidäänkö uudelleen, avataanko lukitus vai yritetäänkö uudelleen?
Androidin keystoren kolme tulosta vaativat kolme erilaista palautusta. Vertaa lukituksen avaamista, uudelleenrekisteröintiä ja palveluntarjoajan uudelleenyritystä ennen sovelluksen tallennustilan tyhjentämistä.
Profiili on edelleen luettelossa, varmenne näkyy edelleen asennettuna ja yhdistämispainike epäonnistuu viestillä, joka sanoo vain ”Keystore-virhe” eikä muuta. Ennen kuin tyhjennät sovelluksen tallennustilan tai luovutat puhelimen, selvitä, mikä avaintoiminto epäonnistui. Kolme tulosta tuottavat saman valintaikkunan, ja ne vastaavat kolmeen eri toimenpiteeseen — vain yksi niistä on tuhoisa. Vertailu on kymmenen minuutin arvoinen, koska väärä haara maksaa sinulle identiteetin, jota yritit pitää.
Kolme vikaa yhden valintaikkunan takana
Ensimmäinen on todennus. Avain on olemassa ja kelvollinen, mutta sen käyttö edellyttää, että käyttäjä todistaa läsnäolonsa — laitteen lukituksen avaus, biometria tai työprofiilin haaste. Jos lukituksen aikakatkaisu, tallennettu biometria tai profiilin tila on muuttunut äskettäin, avaimen käyttö voi epäonnistua, vaikka itse avain on täysin kunnossa.
Toinen on pysyvä mitätöinti. Jotkin avainmateriaalit mitätöi alustan käytäntö, kun lukitusmenetelmä nollataan tai biometrinen rekisteröinti muuttuu, koska niitä suojannut sidonta ei enää pidä. Avainta ei voi korjata, eikä uudelleenyritys ole palautussuunnitelma; identiteetti on korvattava sen myöntäneen rekisteröintiprosessin kautta.
Kolmas on palveluntarjoajan vika: keystore-palvelu ei voinut suorittaa toimintoa juuri nyt. Se on luokka, jota joskus kannattaa yrittää uudelleen, ja ainoa sellainen.
| Failure | What it means | What recovers it | What does not |
|---|---|---|---|
| User not authenticated | Key needs a presence check | Supported unlock or authorization flow | A VPN account password reset |
| Key permanently invalidated | Binding is gone; key unusable | Replacement enrollment for that identity | Retrying, rebooting, reinstalling the client |
| Transient provider error | Service could not complete now | The provider's documented retry path | Clearing app data |
Huomaa, että kaksi kolmesta ei ole tuhoisa ja yhdellä ei ole lainkaan ratkaisua laitetasolla. Mitään niistä ei ratkaista puhelimen pyyhkimisellä, mikä on se askel, jonka ihmiset ottavat ensin, koska valintaikkuna ei anna heille muuta.
Uudelleenrekisteröinti vastaan tietojen tyhjennys
Nämä kaksi näyttävät ulkoapäin samanlaisilta eivätkä ole. Uudelleenrekisteröinti pyytää myöntävältä järjestelmältä uuden identiteetin — tuoreen varmenteen tai avaimen, joka on sidottu tähän laitteeseen — ja poistaa vanhan käytöstä. Tietojen tyhjennys poistaa sovelluksen tallennetun tilan, mikä voi poistaa viittauksen avaimeen poistamatta avainta, tai se voi poistaa avaimen ja jättää sinut ilman valtuutusta luoda se uudelleen.
Ero on tärkeä, koska ei-vietävissä olevat avaimet eivät suunnittelunsa puolesta ole siirrettäviä. Ne elävät laitteen keystoressa, minkä tahansa saatavilla olevan laitteiston tai palveluntarjoajan tukemana, eivätkä ne ole jotain, minkä varmuuskopio tallentaa ja palautus palauttaa. Jos käyttöönoton identiteetti on ei-vietävissä oleva avain, suunnittele uudelleenrekisteröinti palautukseksi ja varmista etukäteen, että sinulla on hyväksytty reitti sen rekisteröinnin hankkimiseksi — jotkin organisaatiot vaativat siihen pääsyn yksityisverkkoon, ja juuri sitä rikki mennyt VPN tarjosi.
Järjestys on siis: kokeile tuettua todennuspolkua, selvitä sitten, onko avain pysyvästi kelvoton, ja korvaa identiteetti vain jos on. Tallennustilan tyhjennys kuuluu viimeiseksi, kun tiedät, mitä luodaan uudelleen, ei ensimmäiseksi siksi, että se on helppoa.
Yritä uudelleen vain sitä, mitä voi yrittää uudelleen
Vanhemmat alustaversiot kokoivat keystore-virheet yhteen poikkeukseen, minkä vuoksi niin monet asiakkaat yrittävät kaikkea uudelleen. API 33:sta lähtien poikkeustyyppi kantaa rakennetta: numeerinen virhe, tilapäisen vian lippu ja uudelleenyrityskäytäntö. Asiakasohjelman kehittäjälle uudelleenyrityskäytäntö on merkityksellinen vain, kun tilapäisyyden lippu on tosi; pysyvällä mitätöinnillä ei ole uudelleenyritysaikataulua, ja sen hakkaaminen silmukassa vain tyhjentää akun ja täyttää lokin.
Jos diagnosoit sen sijaan että kirjoittaisit asiakasohjelmaa, käytännön seuraus on sama. Samanlaiset viat joka yrityksellä sulkevat pois kertaluonteisen häiriön, mutta ne eivät erota pysyvästi mitätöityä avainta palveluntarjoajasta, joka on ollut jonkin aikaa poissa käytöstä — palveluntarjoajan katkos näyttää kymmenennellä yrityksellä täsmälleen samalta kuin ensimmäisellä. Ilman API 33:n jäsennettyjä kenttiä kohtele toistoa syynä etsiä toista signaalia — virhekoodi, jos koontiversiosi näyttää sen, operaattorin tila tai toinen avain samalla laitteella, joka onnistuu — etkä todisteena siitä, että avain on kuollut.
Lue syyketju, älä nimikettä
Sovellukset käärelevät alkuperäisen poikkeuksen, ja käyttöliittymän ystävällinen merkkijono piilottaa usein sen ainoan kentän, joka ratkaisee haaran. Säilytä syyketju ja yrityksen aikaleima: ulompi poikkeus nimeää yleensä toiminnon, ja syy nimeää avaimen tilan.
Vastusta päätelmää, että kaksi epäonnistuvaa sovellusta todistaa viallisen puhelimen. Eri avaimia voivat tukea eri palveluntarjoajat ja turvatasot, eikä vielä toimiva sovellus välttämättä suorita samaa toimintoa lainkaan — allekirjoitus, salauksen purku ja avaimen attestointi ovat eri pyyntöjä samalle palvelulle. KeyStoreException-viite kuvaa jäsennetyt kentät uudemmilla API-tasoilla ja on paikka, josta tarkistaa, mitä koontiversiosi todella voi raportoida.
Se, mitä laitteistopäätelmä vaatisi tuekseen, on kapeampaa kuin useimmat olettavat: sama toiminto samalla palveluntarjoajalla epäonnistuu riippumattomilla avaimilla palveluntarjoajatason virheellä eikä avaintason virheellä. Se on kysymys alustan diagnostiikalle, ei tukifoorumin ketjulle laite-erästä.
Mitä kirjata, kun päätät
Kirjaa Android-koontiversio, asiakasohjelman versio, valittu profiili, epäonnistunut toiminto ja se, onko mikä jotain muuttunut äskettäin — käyttöjärjestelmän päivitys, lukitusnäytön muutos, uusi sormenjälki, uudelleenrekisteröinti. Kirjaa järjestys kontekstina eikä todisteena syystä; lukituksen muutos ennen avainvikaa on uskottava korrelaatio, ei esittely.
Toimi sitten vahvistamasi haaran mukaan. Tilapäinen: pidä identiteetti, käytä tuettua uudelleenyrityspolkua. Todennus vaaditaan: suorita tuettu lukituksenavausvirta loppuun ja pidä käyttöönoton vaatima lukituskäytäntö sen sijaan, että kytkisit sen pois päästäksesi valintaikkunasta. Pysyvästi kelvoton: korvaa ja poista identiteetti käytöstä tavallisen rekisteröinnin kautta.
Lopeta todistamalla tulos tuoreella valtuutetulla yhteydellä todelliseen resurssiin palvelimen vahvistuksen ollessa edelleen käytössä. Mikään, mikä toimii vain löysennetyillä varmenteen tarkistuksilla, ei ole korjannut avainongelmaa — se on siirtänyt sen verkkokerrokseen, jossa se tulee esiin myöhemmin pahempien oireiden kanssa.
- Kolme haaraa: vaatii todennuksen, pysyvästi kelvoton, palveluntarjoajalla tilapäinen.
- Vain kolmas hyötyy uudelleenyrityksestä, ja vain oman uudelleenyrityskäytäntönsä mukaan.
- Korvaava rekisteröinti palauttaa pääsyn; tietojen tyhjennys poistaa vaihtoehdon.
- Vahvista tuoreella yhteydellä ja tavallisilla palvelimen identiteettitarkistuksilla.