პროფილი ჯერ კიდევ სიაშია, სერტიფიკატი ჯერ კიდევ დაყენებულად ჩანს, და დაკავშირების ღილაკი ვერ მუშაობს შეტყობინებით, რომელიც მხოლოდ «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

გაითვალისწინეთ, რომ სამიდან ორი არ არის დამანგრეველი და ერთს მოწყობილობის დონეზე საერთოდ არ აქვს გადაწყვეტა. არც ერთი მათგანი არ წყდება ტელეფონის წაშლით, რაც პირველი ნაბიჯია ხალხისთვის, რადგან დიალოგი მათ სხვა არაფერს აძლევს.

ხელახალი რეგისტრაცია თუ მონაცემების გასუფთავება

ეს ორი გარედან მსგავსი ჩანს და ასე არ არის. ხელახალი რეგისტრაცია გამცემ სისტემას სთხოვს ახალ იდენტობას — ამ მოწყობილობაზე მიბმულ ახალ სერტიფიკატს ან გასაღებს — და ძველს პენსიაზე აგზავნის. მონაცემების გასუფთავება შლის აპის შენახულ მდგომარეობას, რამაც შეიძლება მოხსნას გასაღების მითითება გასაღების წაშლის გარეშე, ან წაშალოს გასაღები და დაგტოვოთ მისი ხელახლა შექმნის უფლების გარეშე.

განსხვავება მნიშვნელოვანია, რადგან არაექსპორტირებადი გასაღებები დიზაინით არ არიან გადასატანი. ისინი ცხოვრობენ მოწყობილობის keystore-ში, ხელმისაწვდომი აპარატურის ან პროვაიდერის მხარდაჭერით, და არ არის ის, რასაც სარეზერვო ასლი იჭერს და აღდგენა უკან აბრუნებს. თუ განთავსების იდენტობა არაექსპორტირებადი გასაღებია, დაგეგმეთ ხელახალი რეგისტრაცია როგორც აღდგენა, და წინასწარ დაადასტურეთ, რომ გაქვთ დამტკიცებული გზა ამ რეგისტრაციის მისაღებად — ზოგი ორგანიზაცია ამისთვის კერძო ქსელზე წვდომას მოითხოვს, რაც ზუსტად ის იყო, რასაც გაფუჭებული VPN გვაძლევდა.

ამიტომ თანმიმდევრობა ასეთია: სცადეთ მხარდაჭერილი აუთენტიფიკაციის გზა, შემდეგ დაადგინეთ, მუდმივად უვალიდურია გასაღები, და შეცვალეთ იდენტობა მხოლოდ მაშინ, თუ ასეა. საცავის გასუფთავება ბოლოშია, მას შემდეგ, რაც იცით რა აღდგება, და არა პირველში იმიტომ, რომ ადვილია.

ხელახლა სცადეთ მხოლოდ ის, რაც განმეორებადია

პლატფორმის ძველი ვერსიები keystore-ის შეცდომებს ერთ გამონაკლისში აერთიანებდნენ, ამიტომ ბევრი კლიენტი ყველაფერს იმეორებს. API 33-დან გამონაკლისის ტიპი სტრუქტურას ატარებს: რიცხვითი შეცდომა, დროებითი მარცხის დროშა და ხელახალი ცდის პოლიტიკა. კლიენტის შემმუშავებლისთვის ხელახალი ცდის პოლიტიკას აზრი მხოლოდ მაშინ აქვს, როცა დროებითობის დროშა ჭეშმარიტია; მუდმივ გაუქმებას ხელახალი ცდის განრიგი არ აქვს, და მასზე ციკლში ცემა მხოლოდ ბატარეას ცლის და ჟურნალს ავსებს.

თუ დიაგნოსტირებთ და არ წერთ კლიენტს, პრაქტიკული შედეგი იგივეა. იდენტური მარცხები ყოველ ცდაზე გამორიცხავს ერთჯერად ხარვეზს, მაგრამ არ გამოჰყოფს მუდმივად გაუქმებულ გასაღებს იმ პროვაიდერისგან, რომელიც უკვე დროა მიუწვდომელია — პროვაიდერის შეფერხება მეათე ცდაზე ზუსტად ისე გამოიყურება, როგორც პირველზე. API 33-ის სტრუქტურირებული ველების გარეშე, გამეორება მიიღეთ როგორც მეორე სიგნალის ძებნის მიზეზი — შეცდომის კოდი, თუ თქვენი build აჩვენებს, ოპერატორის სტატუსი ან იმავე მოწყობილობაზე სხვა გასაღების წარმატება — და არა როგორც მტკიცებულება, რომ გასაღები მკვდარია.

წაიკითხეთ მიზეზების ჯაჭვი და არა იარლიყი

აპლიკაციები ახვევენ თავდაპირველ გამონაკლისს, და ინტერფეისის მეგობრული ტექსტი ხშირად მალავს იმ ერთ ველს, რომელიც ტოტს წყვეტს. შეინახეთ მიზეზების ჯაჭვი და ცდის დროის ნიშა: გარე გამონაკლისი ჩვეულებრივ ასახელებს ოპერაციას, ხოლო მიზეზი — გასაღების მდგომარეობას.

წაუდექით წინ ამ დასკვნას, რომ ორი წარუმატებელი აპი ამტკიცებს მოწყობილობის ხარვეზს. სხვადასხვა გასაღები შეიძლება სხვადასხვა პროვაიდერმა და უსაფრთხოების დონემ შეინარჩუნოს, და მომუშავე აპმა შეიძლება საერთოდ არ შეასრულოს იგივე ოპერაცია — ხელმოწერა, გაშიფვრა და გასაღების ატესტაცია სხვადასხვა მოთხოვნაა იმავე სერვისისადმი. KeyStoreException-ის ცნობარი აღწერს სტრუქტურირებულ ველებს ახალ API დონეებზე და არის ადგილი, სადაც ამოწმებთ, რა შეიძლება რეალურად შეატყობინოს თქვენმა build-მა.

რაც აპარატურულ დასკვნას დააფუძნებდა, უფრო ვიწროა, ვიდრე უმეტესობა ვარაუდობს: იგივე ოპერაცია, იმავე პროვაიდერთან, ვერ სრულდება დამოუკიდებელ გასაღებებში პროვაიდერის დონის შეცდომით და არა გასაღების დონის. ეს პლატფორმის დიაგნოსტიკის კითხვაა, და არა მოწყობილობათა პარტიაზე დახმარების ფორუმის თემა.

რა ჩავიწეროთ, სანამ გადაწყვეტთ

ჩაწერეთ Android-ის build, კლიენტის ვერსია, არჩეული პროფილი, ვერ შესრულებული ოპერაცია და შეიცვალა თუ არა რამე ცოტა ხნის წინ — ოპერაციული სისტემის განახლება, ჩაკეტვის ეკრანის ცვლილება, ახალი ანაბეჭდი, ხელახალი რეგისტრაცია. ჩაწერეთ თანმიმდევრობა კონტექსტად და არა მიზეზის მტკიცებულებად; ჩაკეტვის ცვლილება გასაღების მარცხამდე სარწმუნო კორელაციაა, და არა დემონსტრაცია.

შემდეგ იმოქმედეთ თქვენ მიერ დადგენილი ტოტის მიხედვით. დროებითი: შეინარჩუნეთ იდენტობა, გამოიყენეთ მხარდაჭერილი ხელახალი ცდის გზა. აუთენტიფიკაცია საჭიროა: დაასრულეთ მხარდაჭერილი განბლოკვის პროცესი და შეინარჩუნეთ განთავსების მოთხოვნილი ჩაკეტვის პოლიტიკა, ნაცვლად იმისა, რომ დიალოგის გასავლელად გამორთოთ ის. მუდმივად უვალიდური: შეცვალეთ და პენსიაზე გააგზავნეთ იდენტობა ჩვეულებრივი რეგისტრაციით.

დაასრულეთ იმით, რომ შედეგი დაამტკიცოთ ახალ ნებადართულ კავშირზე, რეალურ რესურსთან, სერვერის ვალიდაცია ჯერ კიდევ ჩართული. ყველაფერი, რაც მუშაობს მხოლოდ შესუსტებული სერტიფიკატის შემოწმებით, არ გამოასწორა გასაღების პრობლემა — მან ის ქსელურ შრეში გადაიტანა, სადაც მოგვიანებით უარესი სიმპტომებით გამოჩნდება.

  • სამი ტოტი: აუთენტიფიკაცია საჭიროა, მუდმივად უვალიდური, პროვაიდერთან დროებითი.
  • მხოლოდ მესამე იღებს სარგებელს ხელახალი ცდისგან, და მხოლოდ საკუთარი ხელახალი ცდის პოლიტიკის მიხედვით.
  • შემცვლელი რეგისტრაცია აღადგენს წვდომას; მონაცემების გასუფთავება ამ შესაძლებლობას შლის.
  • დაადასტურეთ ახალი კავშირით და სერვერის იდენტობის ჩვეულებრივი შემოწმებებით.

დაკავშირებული სტატიები