Служба поддержки Google говорит :
Допустимый тип блокировки может быть заранее определен вашим системным администратором.
Где я могу определить, что приемлемо? Я могу восстановить сертификат, если это необходимо.
Так что я могу снова использовать слайд-экран блокировки.
(у меня CM9 RC1, Android 4.0.4)
Проблема с отключением защиты экрана блокировки с помощью переключателя/профиля заключается в том, что виджеты экрана блокировки также не отображаются, поэтому вы не можете сдвинуть, чтобы разблокировать. Кроме того, когда вы перезагружаете телефон, кнопки не работают, пока вы снова не переключите настройку.
Другой способ — установить сертификат как обычно, а затем создать резервную копию каталогов /data/misc/keychain и хранилища ключей, используя что-то, что сохраняет ACL, например Root Explorer, в расположение, которое поддерживает ACL. Я предлагаю скопировать их в /tmp. Затем очистите учетные данные в настройках и включите функцию «Слайд для разблокировки». Затем скопируйте обратно папки из /tmp. ЦС будет установлен.
Я описал, как именно это сделать, на своей странице «Установка сертификатов CAcert на Android в качестве «системных» учетных данных без блокировки экрана — инструкции» по адресу http://wiki.pcprobleemloos.nl/android/cacert .
Я также разместил его на форуме cyanogenmod: http://forum.cyanogenmod.com/topic/82875-installing-cacert-certificates-on-android-as-system-credentials-without-lockscreen/
В основном это команды:
openssl x509 -inform PEM -subject_hash_old -in root.crt | head -1
Чтобы получить правильное имя файла, конвертируйте сертификат:
cat root.crt > 5ed36f99.0
openssl x509 -inform PEM -text -in root.crt -out /dev/null >> 5ed36f99.0
Скопируйте их в /system/etc/security/cacerts/ и измените новые файлы .0 на «644». Перезагрузитесь и проверьте. На вашем устройстве Android выберите «Очистить сертификаты», и вы сможете удалить пин-код (введя пин-код и изменив экран блокировки на «нет» или «стереть»
Здесь я использовал корневой сертификат CAcert, но вы, вероятно, также хотите использовать сертификат class3.crt или использовать свои собственные сертификаты.
140342119224992:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE
. При проверке Unable to load certificate in openssl файл должен .pem
совпадать. Но тогда ваша последняя команда ничего не меняет. Что-то не так, или это ожидается для самозаверяющего/созданного ЦС? И прежде чем я начну взламывать: должно ли это работать?openssl x509 -inform PEM -text -fingerprint -in cacert.pem > d6a2705a.0
, затем переместил блок base64 наверх с помощью текстового редактора, поместил файл в /system/etc/security/cacerts/
, запустил chown root:root d6a2705a.0
и chmod 0644 d6a2705a.0
из каталога — и вуаля, он оказывается доверенным системным сертификатом . Йехаа!-----END CERTIFICATE-----Certificate:
это также вызвало ошибку синтаксического анализа.Я обнаружил решение, которое работает без дополнительного программного обеспечения или ручного копирования файлов:
Теперь система настроена на «разблокировку смахиванием», но сертификат пользователя по-прежнему можно использовать (проверено с помощью веб-браузера и пользовательского приложения с использованием DefaultHttpClient).
Протестировано на Android 4.1.2 на Galaxy Tab 2 10.1.
Просто хотел добавить ответ, который представляет собой вариант ответа guttermonk для одного конкретного случая использования: установка сертификата на экземпляр Bluestacks. На момент написания этой статьи приложение настройки для Bluestacks было изменено таким образом, что установка пин-кода или пароля невозможна, а также невозможно добавление сертификата пользователя. Но мы можем получить корневой сертификат в системе с подходом guttermonk и некоторыми другими шагами. Я смог установить сертификат без пин-кода или пароля и даже не устанавливая его в хранилище сертификатов пользователя.
Предпосылки:
В моем случае я загрузил файл сертификата в Bluestacks, и там не было доступного openssl. Мы можем скопировать файл в каталог, общий для Windows :
cp /sdcard/Download/mycert.cer /sdcard/windows/BstSharedFolder
В Windows мы можем использовать openssl для получения хэша сертификата (я предполагаю, что это так).
cd C:\ProgramData\BlueStacks\Engine\UserData\SharedFolder # in CMD
cd /c/ProgramData/BlueStacks/Engine/UserData/SharedFolder # in Bash
openssl x509 -inform PEM -subject_hash_old -in mycert.cer | head -1
# e.g. abcd1234
Вернувшись в Android, мы можем сделать системный раздел доступным для записи , скопировать сертификат в каталог системных сертификатов и исправить его разрешения и владельца. Смонтируйте системный раздел только для чтения после этого, в целях безопасности.
mount -o rw,remount /system
cd /system/etc/security/cacerts/
cp /sdcard/Download/mycert.cer ./abcd1234.0
chmod 644 abcd1234.0
chown system:system abcd1234.0
mount -o ro,remount /system
Вы можете использовать профили CyanogenMod .
(Для других читателей: для этого требуется пользовательский CyanogenMod Rom версии 9+)
Просто создайте или измените существующий профиль и отключите там «блокировку экрана».
Это: Системные настройки->Профили->По умолчанию->Режим блокировки экрана->Отключено.
Интегрируйте свой сертификат в стандартный файл хранилища ключей Android.
См. отличное руководство CAcert здесь
Однако я не уверен, что вы можете сделать это с помощью самозаверяющего сертификата (возможно, вам придется переключиться на самодельный ЦС (используйте tinyca для хорошего графического инструмента на * nix)).
Я нашел способ решить проблему, но он требует root и может работать только с root, самозаверяющими или промежуточными CA.
Если у вас есть сертификат, которому Android не доверяет, при его добавлении он попадает в личное хранилище сертификатов. Когда вы добавляете сертификат в это личное хранилище сертификатов, системе требуется более высокий уровень безопасности, чтобы разблокировать устройство. Но если вам удастся добавить свой сертификат в системное хранилище, у вас не будет этого требования. Очевидно, что для добавления сертификата в системное хранилище требуется root, но это довольно просто.
Вот как это сделать:
1 - добавьте свой сертификат в обычном режиме. Например, мой сертификат назывался some.crt
. Он будет сохранен в вашем личном магазине, и Android запросит у вас пин-код/пароль... Продолжайте.
2 - С помощью файлового менеджера с правами суперпользователя просмотрите файлы в формате /data/misc/keychain/cacerts-added
или /data/misc/keystore
. Здесь вы должны увидеть файл, который называется 1000_USRCERT_some
сертификатом, который вы добавили на шаге 1.
3 - Переместите этот файл в system/etc/security/cacerts
(вам нужно будет смонтировать системный раздел r/w)
4 - Перезагрузить телефон
5 - Теперь вы можете очистить PIN-код/пароль, которые вы установили для разблокировки устройства.
У меня работал с самозаверяющим сертификатом на Android 4.4.2. Надеюсь, это поможет!
рдлу
GATrawn
Иззи