Nie można zainstalować certyfikatu

13

Próbuję zainstalować ten certyfikat na tablecie Google Nexus 7 .

Skopiowałem plik certyfikatu (z Win7x64) do pamięci wewnętrznej i otworzyłem go w menedżerze plików, aby go zainstalować. Ta procedura działała w przypadku poprzedniej (obecnie wygasłej) wersji certyfikatu (którą usunąłem z urządzenia przed próbą zainstalowania nowej).

Jednak w przypadku tego nowego certyfikatu pojawia się następujący komunikat:

Nie można zainstalować, ponieważ nie można odczytać pliku certyfikatu.

Ten sam plik można bezbłędnie zainstalować w różnych magazynach certyfikatów na komputerze, do którego podłączyłem tablet (stąd pobrany plik nie jest uszkodzony). Skopiowałem plik kilka razy na tablet i spróbowałem ponownie, zawsze z tym samym rezultatem (stąd skopiowany plik najprawdopodobniej też nie jest uszkodzony).

Najpierw tablet z Androidem 4.4.4, a następnie zaktualizowałem go do Androida 5.0.2. Otrzymuję ten sam komunikat o błędzie w obu systemach.

Administratorzy odpowiedzialni za dostarczenie certyfikatu nie otrzymali do tej pory żadnych takich raportów, a certyfikat wydawał się instalować bezbłędnie dla innych osób na urządzeniach z Androidem różnych typów.

Nie mogłem znaleźć wielu powiązanych problemów w sieci; przeszukanie komunikatu o błędzie szybko doprowadziło do plików zasobów lokalizacji, które określają ten komunikat (zwykle zły znak w odniesieniu do częstotliwości użytkowników tam napotykających komunikat o błędzie). Najbardziej obiecujące linki nadal wydają się ślepymi zaułkami:

  • Komunikat o błędzie jest wymieniony w poście na forum , ale jedyną reakcją na to wydaje się być hmm ... naprawdę nie jestem pewien, co to jest. Zajmę się tym jednak (od grudnia 2013 r.). Nie mogłem znaleźć dalszych działań w związku z tym problemem, a reszta wątku wydaje się być niepowiązana ze sobą.
  • Istnieje otwarte pytanie SO, które powołuje się na tę samą wiadomość (choć odnosi się do czegoś o nazwie „Android Moto G”) z marca 2014 r., Ale jak dotąd nikt nie udzielił odpowiedzi.

Dlatego moje pytania to:

  • Na jaki problem wskazuje komunikat o błędzie?
  • Jak mogę zainstalować plik certyfikatu?

EDYCJA: Oto wynik dziennika tego, co się dzieje, gdy próbuję otworzyć certyfikat w aplikacji menedżera plików na urządzeniu:

I/ActivityManager(  540): START u0 {act=android.intent.action.VIEW dat=file:///storage/emulated/0/Download/infcacert.crt typ=application/x-x509-ca-cert flg=0x10000000 cmp=com.android.certinstaller/.CertInstallerMain} from uid 10083 on display 0

E/ActivityManager(  540): Invalid thumbnail dimensions: 720x720

I/ActivityManager(  540): Start proc com.android.certinstaller for activity com.android.certinstaller/.CertInstallerMain: pid=11644 uid=10008 gids={50008, 9997} abi=armeabi-v7a

E/CertInstaller(11644): Failed to read certificate: java.io.FileNotFoundException: /storage/emulated/0/Download/infcacert.crt: open failed: EACCES (Permission denied)

D/OpenGLRenderer(11644): Render dirty regions requested: true

D/Atlas   (11644): Validating map...

I/Adreno-EGL(11644): <qeglDrvAPI_eglInitialize:410>: QUALCOMM Build: 10/28/14, c33033c, Ia6306ec328

I/OpenGLRenderer(11644): Initialized EGL, version 1.4

D/OpenGLRenderer(11644): Enabling debug mode 0

I/ActivityManager(  540): Displayed com.android.certinstaller/.CertInstallerMain: +362ms (total +453ms)

V/RenderScript(11644): Application requested CPU execution

V/RenderScript(11644): 0xa330c400 Launching thread(s), CPUs 4

D/TaskPersister(  540): removeObsoleteFile: deleting file=7_task.xml

D/TaskPersister(  540): removeObsoleteFile: deleting file=7_task_thumbnail.png

Kluczową częścią wydaje się być java.io.FileNotFoundException: /storage/emulated/0/Download/infcacert.crt: open failed: EACCES (odmowa zezwolenia) . Nie rozumiem tego komunikatu - pomyślnie skopiowałem i otworzyłem inne pliki na urządzeniu w taki sam sposób, jak teraz z plikiem certyfikatu. Co więcej, jak mam odpowiednio ustawić te uprawnienia do plików, kopiując je na urządzenie za pomocą Eksploratora Windows?

Użytkownik od Stgt
źródło
Jeśli znasz adb, możesz podać kopię danych wyjściowych logcat podczas próby zainstalowania certyfikatu. Ponieważ wydaje się, że jest trochę rejestrowania tuż przed zdobyciem toastu. grepcode.com/file/repository.grepcode.com/java/ext/…
Morrison Chang
@ MorrisonChang: Dodałem odpowiednie dane wyjściowe dziennika. Nie jestem pewien, jak to zinterpretować (w tej konkretnej sytuacji - w różnych okolicznościach wyjątek byłby całkowicie jasny), a raczej jak rozwiązać problem.
Użytkownik od Stgt,

Odpowiedzi:

28

Właśnie miałem ten sam problem.

Idź do Settings> Security> Install from storage.
Znajdź plik certyfikatu i zainstaluj go.

Edycja:
Jeśli zamiastInstall from storagepreferencji maszInstall from SD card(właśnie to wyświetla się na przykład podczas korzystania z emulatora API-19), wymagany jest dodatkowy krok. Ponieważ w tym przypadku działanie pokazuje tylkomenuRecentiDownloadsmenu bez prostego sposobu wybrania certyfikatu z karty SD.
Obejściem tego problemu było umieszczenie certyfikatu na lokalnym serwerze internetowym mojego pulpitu (na przykład mangusta ). Następnie (na emulatorze) otworzyłem katalog internetowy, używając przeglądarki głównej, stuknąłem w certyfikat (patrz poniżej) i wybrałemSave link. Plik zostanie pobrany i wyświetlony w widoku Pobrane, a Ty będziesz mógł go pomyślnie wybrać.

zapisz zrzut ekranu linku

Alex Lipov
źródło
9

Kolejne zastrzeżenie: podczas instalowania certyfikatu przez Ustawienia> Bezpieczeństwo> Zainstaluj z pamięci na moim Nexusie 7, Androidzie 5.0.2 Musiałem przejść do pliku za pomocą pamięci wewnętrznej :

Nawiguj przez pamięć wewnętrzną

Starając się wybrać plik, używając skrótu do pobrania nie nie działa.

kynan
źródło
Czy możesz wyjaśnić, jak to robisz? Mam na myśli, jak nawigować do pliku za pośrednictwem pamięci wewnętrznej?
Alex Lipov
@AlexLipov Dodałem zrzut ekranu, mam nadzieję, że to wyjaśni.
kynan
DZIĘKUJĘ CI! Wyciągałem włosy na tym urządzeniu genymotion 5.0.0 nexus.
Dylan Pierce
Nadal musiałem to zrobić w Androidzie P na moim Pixelu. Musiałem przejść do Pixela, a następnie przejść do Pobranych, zamiast używać Pobrań najwyższego poziomu, zanim zaakceptuje pliki.
Jonah H.