Профил је и даље на листи, сертификат се и даље приказује као инсталиран, а дугме за повезивање не успева са поруком која каже само Грешка keystore и ништа више. Пре него што обришете складиште апликације или предате телефон, утврдите која операција са кључем није успела. Три исхода производе исти дијалог и одговарају на три различите радње — само једна од њих је деструктивна. Поређење вреди десет минута, јер погрешна грана вас кошта идентитета који сте покушавали да сачувате.

Три неуспеха иза једног дијалога

Први је аутентификација. Кључ постоји и важећи је, али његово коришћење захтева да корисник докаже присуство — откључавање уређаја, биометрију или изазов радног профила. Ако су се временско ограничење закључавања, регистрована биометрија или стање профила недавно променили, коришћење кључа може да не успе иако је сам кључ потпуно исправан.

Други је трајна неважност. Неки кључни материјал се поништава политиком платформе када се начин закључавања ресетује или биометријска регистрација промени, јер веза која га је штитила више не важи. Кључ не може да се поправи и поновни покушај није план опоравка; идентитет мора да се замени кроз процес регистрације који га је издао.

Трећи је отказ провајдера: услуга keystore није могла да заврши операцију управо сада. То је класа коју понекад вреди поновити, и једина.

FailureWhat it meansWhat recovers itWhat does not
User not authenticatedKey needs a presence checkSupported unlock or authorization flowA VPN account password reset
Key permanently invalidatedBinding is gone; key unusableReplacement enrollment for that identityRetrying, rebooting, reinstalling the client
Transient provider errorService could not complete nowThe provider's documented retry pathClearing app data

Приметите да два од три нису деструктивна и један уопште нема решење на нивоу уређаја. Ниједан од њих не решава брисање телефона, што је корак који људи предузимају први јер им дијалог не даје ништа друго.

Поновна регистрација наспрам брисања података

Ова два споља изгледају слично и нису. Поновна регистрација тражи од система који издаје нови идентитет — свеж сертификат или кључ везан за овај уређај — и повлачи стари. Брисање података уклања сачувано стање апликације, што може да уклони референцу на кључ без уклањања кључа, или може да уклони кључ и остави вас без овлашћења да га поново створите.

Разлика је важна јер кључеви који не могу да се извезу по дизајну нису преносиви. Они живе у складишту кључева уређаја, подржани хардвером или провајдером који је доступан, и нису нешто што резервна копија обухвата и опоравак враћа. Ако је идентитет у распоређивању кључ који не може да се извезе, планирајте поновну регистрацију као опоравак и унапред потврдите да имате одобрен пут за добијање те регистрације — неке организације за то захтевају приступ приватној мрежи, што је управо оно што је покварени VPN пружао.

Дакле редослед је: испробајте подржани пут аутентификације, затим утврдите да ли је кључ трајно неважећи и замените идентитет само ако јесте. Брисање складишта је последње, пошто знате шта ће бити поново створено, а не прво зато што је лако.

Понављајте само оно што може да се понови

Старије верзије платформе сводиле су грешке keystore на један изузетак, због чега толико клијената понавља све. Од API 33 тип изузетка носи структуру: нумеричку грешку, ознаку привременог отказа и политику понављања. За програмера клијента политика понављања има смисла само када је ознака привремености истинита; трајна неважност нема распоред понављања, а ударање по њој у петљи само празни батерију и пуни дневник.

Ако дијагностикујете уместо да пишете клијента, практична последица је иста. Идентични неуспеси при сваком покушају искључују једнократни проблем, али не одвајају трајно поништен кључ од провајдера који је већ неко време недоступан — испад провајдера изгледа потпуно исто на десетом покушају као и на првом. Без структурираних поља API 33, третирајте понављање као разлог да потражите други сигнал — код грешке, ако га ваша изградња открива, статус оператера или успех другог кључа на истом уређају — а не као доказ да је кључ мртав.

Читајте ланац узрока, не ознаку

Апликације обавијају оригинални изузетак, а пријатељски низ у интерфејсу често скрива једино поље које одлучује грану. Сачувајте ланац узрока и временску ознаку покушаја: спољни изузетак обично именује операцију, а узрок именује стање кључа.

Не подлежите закључку да две апликације које не успевају доказују неисправан телефон. Различите кључеве могу да подржавају различити провајдери и нивои безбедности, а апликација која још ради можда уопште не обавља исту операцију — потпис, дешифровање и атестација кључа различити су захтеви ка истој услузи. Референце KeyStoreException описује структурирана поља на новијим нивоима API и место је где проверавате шта ваша изградња заиста може да пријави.

Оно што би подржало закључак о хардверу уже је него што већина људи претпоставља: иста операција, код истог провајдера, која не успева на независним кључевима са грешком на нивоу провајдера, а не кључа. То је питање за дијагностику платформе, не за нит форума подршке о серији уређаја.

Шта забележити док одлучујете

Забележите изградњу Андроида, верзију клијента, изабрани профил, операцију која није успела и да ли се нешто недавно променило — ажурирање ОС-а, промена екрана за закључавање, нови отисак прста, поновна регистрација. Запишите редослед као контекст, а не као доказ узрока; промена закључавања пре отказа кључа је веродостојна корелација, не демонстрација.

Затим поступајте по утврђеној грани. Привремено: сачувајте идентитет, користите подржани пут понављања. Потребна аутентификација: завршите подржани ток откључавања и задржите политику закључавања коју распоређивање захтева уместо да је искључите да бисте прошли дијалог. Трајно неважеће: замените и повуците идентитет кроз нормалну регистрацију.

Завршите доказивањем исхода на новој овлашћеној вези, ка стварном ресурсу, са још укљученом валидацијом сервера. Све што ради само са опуштеним проверама сертификата није решило проблем кључа — преместило га је у мрежни слој, где ће се касније појавити са горим симптомима.

  • Три гране: потребна аутентификација, трајно неважећи, привремени отказ провајдера.
  • Само трећа има корист од понављања, и то само по својој политици понављања.
  • Заменска регистрација враћа приступ; брисање података уклања ту могућност.
  • Проверите на новој вези и уз нормалне провере идентитета сервера.

Повезани чланци