Установка сертификата без обязательного PIN-кода блокировки экрана

23

Служба поддержки Google говорит :

Тип блокировки, который приемлем, может быть предопределен вашим системным администратором.

Где я могу определить, что приемлемо? Я могу восстановить сертификат при необходимости.

Так что я могу снова использовать слайд-экран блокировки.

(Я использую CM9 RC1, Android 4.0.4)

rdlu
источник
1
Я приму решение, которое устанавливает сертификат в систему напрямую, таким образом, обойдя требование о пин-коде.
rdlu
1
Для защиты ваших учетных данных требуется, чтобы вы использовали один из типов блокировки экрана, который имеет какой-то секретный код (шаблон, PIN-код или пароль). Эта строка говорит вам о том, что ваш администратор может (обычно с помощью политики Exchange ActiveSync) заблокировать ваш телефон, так что принимаются только некоторые типы, например, они могут не доверять шаблонным блокировкам и могут думать, что 4-значная цифра У ПИНов недостаточно комбинаций. Это не значит, что вы можете отключить это требование безопасности.
GAThrawn
2
@ GAThrawn Я считаю, что это неприемлемо, если я просто устанавливаю ЦС для аутентификации своих веб-серверов через SSL (используя самозаверяющие сертификаты). Я бы понял это, если бы речь шла о подписи ключей на устройстве или аутентификации пользователя - но оба они противоположны. К счастью, решение sgiebels мне подходит , с некоторыми незначительными изменениями, которые я описал в комментариях. Пока единственный недостаток: для этого нужен рут.
Иззи

Ответы:

2

Проблема с отключением защиты экрана блокировки с помощью переключателя / профиля заключается в том, что виджеты экрана блокировки также не отображаются, поэтому вы не можете скользить, чтобы разблокировать. Кроме того, при перезагрузке телефона кнопки не работают, пока вы снова не переключите настройку.

Другой способ - установить сертификат как обычно, а затем выполнить резервное копирование каталогов / data / misc / keychain и keystore с помощью чего-то, что сохраняет ACL, такие как Root Explorer, в место, которое поддерживает ACL. Я предлагаю скопировать их в / tmp. Затем удалите учетные данные из меню «Настройки» и включите «Слайд для разблокировки». Затем скопируйте обратно папки из / tmp. CA будет установлен.

Monstieur
источник
Это больше не работает. Как только вы пытаетесь использовать сертификат где-то (например, при подключении к сети Wi-Fi), ОС требует, чтобы вы снова установили блокировку на экране.
Кори Кляйн
@CoryKlein Если вы нажмете «Отмена», вам будет предложено ввести PIN-код, и вы сможете ввести последний установленный вами. Это необходимо для расшифровки данных.
Monstieur
@Kurian - так что я следовал инструкциям выше, и когда я пытаюсь подключиться к сети Wi-Fi, он говорит: «Вам нужно установить PIN-код экрана блокировки», я нажимаю «Отмена», и ничего не происходит. Если я нажимаю «ОК», то отменяю, он все равно не запрашивает PIN-код.
Кори Кляйн
@CoryKlein Я неправильно прочитал ваш предыдущий комментарий. Я говорил о VPN. При подключении к VPN запрашивается последний PIN-код экрана блокировки для расшифровки учетных данных. Я не знаю, работает ли это для личных сертификатов с закрытыми ключами. Я знаю, что это работает для установки доверенных сертификатов CA. Это также может быть конкретное ПЗУ, которое вы используете. В AOSP ROM до ICS никогда не требовался PIN-код блокировки экрана для сохранения учетных данных VPN.
Монстер
7

Я описал, как это сделать, на своей странице «Установка сертификатов CAcert на Android как« системные »учетные данные без блокировки экрана - инструкции» по адресу http://wiki.pcprobleemloos.nl/android/cacert.

Я также разместил его на форуме cyanogenmod: http://forum.cyanogenmod.com/topic/82875-install-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 или использовать свои собственные сертификаты.

sgiebels
источник
Вы упоминаете «собственные сертификаты». Я просто попытался его с моим «CA» (созданный с использованием TinyCA), и на последнем этапе ( «сообщить») только получаю сообщение об ошибке: 140342119224992:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:696:Expecting: TRUSTED CERTIFICATE. При выборе Не.pem удается загрузить сертификат в openssl , файл должен совпадать. Но тогда ваша последняя команда ничего не меняет. Что-то не так, или это ожидается для самоподписанного / созданного ЦС? И прежде чем я начну взламывать: все же это должно работать?
Иззи
Хорошо, работал и был принят с моим самостоятельно созданным TinyCA CA: 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изнутри каталога - и так далее, он оказался сертификатом доверенной системы , Yeehaa!
Иззи
@sgiebels У вас случайно есть решение, как использовать учетные данные (из системных или других) в беспроводном соединении 802.1X? Похоже, что хранилище ключей / связка ключей на устройстве (/ data / misc / key ...) использует пароль для шифрования, поэтому: каждый раз, когда требуются учетные данные (подключение к WLAN), PIN-код / ​​пароль запрашивается снова ( в моей системе) замок снова включен.
Ивин
Это работало хорошо, за исключением того, что у меня также возникла проблема с форматированием сертификата из-за окончаний строки dos. dos2unix преобразует их, а затем проверяет правильность окончания в строке сертификата (мое выглядело так: -----END CERTIFICATE-----Certificate:это также вызвало ошибку разбора.
deed02392
4

Я обнаружил решение, которое работает без дополнительного программного обеспечения или ручного копирования файлов:

  1. Установите экран блокировки на «шаблон». Введите шаблон и PIN-код разблокировки. Запомните PIN-код разблокировки.
  2. Установите свой сертификат пользователя.
  3. Выключите и снова включите экран.
  4. Введите неправильный шаблон несколько раз, пока не появится «Забыли шаблон?» опция появляется.
  5. Нажмите «Забыли шаблон?», Прокрутите вниз, введите PIN-код разблокировки и подтвердите, нажав «ОК».
  6. Закройте окно «Настройки разблокировки экрана» кнопкой «Назад», не выбирая опцию .

Теперь система настроена на «Размах разблокировки», но сертификат пользователя по-прежнему можно использовать (протестировано с помощью веб-браузера и пользовательского приложения с использованием DefaultHttpClient).

Протестировано на Android 4.1.2 на Galaxy Tab 2 10.1.

Heinzi
источник
не работает с wpa-enterprise / TLS на LG G2, сертификаты исчезли после этого
Евгений Петров
Это отличная ошибка! Благодарность! (отлично работал с Galaxy S5, android 6)
Adiel
0
  • Вы можете использовать профили CyanogenMod .
    (Для других читателей: для этого нужен пользовательский CyanogenMod Rom версии 9+)

    Просто создайте или измените существующий профиль и отключите «блокировку экрана».

    Это: Системные настройки-> Профили-> По умолчанию-> Режим блокировки экрана-> Отключено

  • Интегрируйте свой сертификат в стандартный файл хранилища ключей Android

    Смотрите отличные инструкции CAcert здесь

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

CE4
источник
Это не работает (больше). Как только вы установили сертификаты (например, сертификаты cacert.org), этот параметр / элемент в профиле будет недоступен.
синеватый
-1

Я нашел способ решения проблемы, но он требует root и может работать только с корневыми, самоподписанными или промежуточными CA.

Если у вас есть сертификат, которому Android не доверяет, при его добавлении он попадает в личный магазин сертификатов. Когда вы добавляете сертификат в это персональное хранилище сертификатов, системе требуется более высокий уровень безопасности для разблокировки устройства. Но если вам удастся добавить свой сертификат в системное хранилище, у вас нет этого требования. Очевидно, что root требуется для добавления сертификата в системное хранилище, но это довольно просто.

Вот как это сделать:

1 - Добавьте свой сертификат как обычно. Например, мой сертификат был назван some.crt. Он будет храниться в вашем личном магазине, и Android попросит вас ввести PIN-код / ​​пароль ... Продолжить.

2 - С файловым менеджером с корневыми возможностями, просматривайте файлы в /data/misc/keychain/cacerts-addedили /data/misc/keystore. Здесь вы должны увидеть файл, который называется 1000_USRCERT_someэто сертификат, который вы добавили на шаге 1.

3 - Переместите этот файл в system/etc/security/cacerts (вам нужно будет смонтировать системный раздел r / w)

4 - перезагрузить телефон

5 - Теперь вы можете удалить пин-код / ​​пароль, которые вы установили для разблокировки устройства.

У меня работал самоподписанный сертификат на Android 4.4.2. Надеюсь, это поможет!

guttermonk
источник
Интересно, что вы не упомянули первоисточник , и автор не получил должного упоминания . Следуйте Как ссылаться на материал, написанный другими .
Повелитель огня