Невозможно установить сертификат

13

Я пытаюсь установить этот сертификат на планшет Google Nexus 7 .

Я скопировал файл сертификата (из Win7x64) на его внутреннее хранилище и открыл его в файловом менеджере, чтобы установить его. Эта процедура работала для предыдущей (ныне истекшей) версии сертификата (которую я удалил на устройстве перед попыткой установить новый).

Однако для этого нового сертификата появляется следующее сообщение:

Не удалось установить, поскольку файл сертификата не может быть прочитан.

Один и тот же файл можно без проблем установить в различные хранилища сертификатов на компьютере, к которому я подключил планшет (следовательно, загруженный файл не поврежден). Я несколько раз скопировал файл на планшет и повторил попытку, всегда с тем же результатом (следовательно, скопированный файл, скорее всего, также не поврежден).

Сначала на планшете был Android 4.4.4, потом я обновился до Android 5.0.2. Я получаю одно и то же сообщение об ошибке в обеих системах.

Администраторы, ответственные за предоставление сертификата, до сих пор не получали таких отчетов, и сертификат, казалось, безупречно устанавливался для других людей на устройствах Android различных типов.

Я не мог найти много связанных вопросов в Интернете; поиск сообщения об ошибке быстро привел к файлам ресурсов локализации, которые указывают это сообщение (обычно это плохой признак в отношении частоты появления пользователей, которые сталкиваются с сообщением об ошибке). Наиболее перспективные ссылки все еще кажутся тупиками:

  • Сообщение об ошибке упоминается в сообщении на форуме , но единственная реакция на него, кажется, хм ... не совсем уверен, что это такое. Я посмотрю в это хотя (с декабря 2013 года). Я не смог найти никакого продолжения этой проблемы, и остальная часть темы, кажется, не имеет отношения к болтовне.
  • Существует открытый вопрос SO со ссылкой на то же сообщение (хотя и ссылающийся на что-то под названием «Android Moto G») от марта 2014 года, но пока никто не дал ответа.

Следовательно, мои вопросы:

  • На какую проблему на самом деле указывает сообщение об ошибке?
  • Как я могу установить файл сертификата?

РЕДАКТИРОВАТЬ: Вот вывод журнала того, что происходит, когда я пытаюсь открыть сертификат в приложении файлового менеджера на устройстве:

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

Важнейшей частью, по-видимому, является java.io.FileNotFoundException: /storage/emulated/0/Download/infcacert.crt: open failed: EACCES (разрешение отклонено) . Я не понимаю это сообщение - я успешно скопировал и открыл другие файлы на устройстве точно так же, как я делал это сейчас с файлом сертификата. Кроме того, как бы я правильно установил эти разрешения на файлы при копировании их на устройство через проводник Windows?

Пользователь из Stgt
источник
Если вы знакомы с adb, можете ли вы предоставить копию вывода logcat при попытке установить сертификат. Поскольку, кажется, есть некоторая регистрация непосредственно перед тем, как вы получите тост. grepcode.com/file/repository.grepcode.com/java/ext/…
Моррисон Чанг
@MorrisonChang: я добавил соответствующий вывод журнала. Я не уверен, как это интерпретировать (в данной конкретной ситуации - при других обстоятельствах исключение будет совершенно ясным), или, скорее, как решить проблему.
Пользователь из Stgt

Ответы:

28

Просто была такая же проблема.

Перейти к Settings> Security> Install from storage.
Найдите файл сертификата и установите его.

Изменить:
Если вместоInstall from storageпредпочтения у вас естьInstall from SD card(это то, что отображается, когда вы используете эмулятор API-19, например), то требуется еще один дополнительный шаг. Потому что в этом случае активность показывает толькоRecentиDownloadsменю без простого способа выбрать сертификат из SDCard.
Обходной путь для меня заключался в том, чтобы поместить сертификат на локальный веб-сервер моего компьютера (например, mongoose ). Затем (на эмуляторе) я использовал стандартный браузер, чтобы открыть веб-каталог, нажал на сертификат (см. Ниже) и выбралSave link. Файл будет загружен и показан в представлении «Загрузки», и вы сможете выбрать его успешно.

сохранить ссылку скриншот

Алекс Липов
источник
9

Еще одна оговорка: при установке сертификата через Настройки> Безопасность> Установить из хранилища на моем Nexus 7, Android 5.0.2 мне пришлось перейти к файлу через Внутреннее хранилище :

Навигация через внутреннее хранилище

Попытка выбрать файл с помощью ярлыка на Загрузки ничего не работает.

kynan
источник
Не могли бы вы объяснить, как вы это делаете? Я имею в виду, как вы переходите к файлу через внутреннее хранилище?
Алекс Липов
@AlexLipov Я добавил скриншот, надеюсь, это прояснит.
Кинан
СПАСИБО! Я выдергивал свои волосы на этом устройстве nexus genymotion 5.0.0.
Дилан Пирс
Еще пришлось сделать это в Android P на моем Pixel. Пришлось перейти на Pixel, затем перейти к загрузкам, а не использовать загрузки верхнего уровня, прежде чем он будет принимать файлы.
Иона Х.