Подтвердить что ты не робот

Сертификат списка, хранящийся в учетных данных пользователя

В Android 7 Nougat установленный пользователем сертификат переходит к "User credentials" вместо "Trusted credentials" (который состоит из системных учетных данных и учетных данных пользователя).

Я использовал для доступа к "доверенным учетным данным":

KeyStore keystore = KeyStore.getInstance("AndroidCAStore");

через приведенный выше код я могу получить доступ к учетным данным системы и пользователя.

Но теперь, в Android 7, установленный пользователем сертификат переходит в отдельное место под названием "User credentials" в разделе Settings --> Security --> User credentials.

Мой вопрос в том, как я могу программно перечислить учетные данные внутри User credentials в Android 7?

4b9b3361

Ответ 1

Чтобы обеспечить более последовательный и безопасный опыт в экосистеме Android, начиная с Android Nougat, совместимые устройства доверяют только стандартным системным CAs поддерживаемым в AOSP.

Раньше набор pre-installed CAs комплект поставки системы, мог варьироваться от устройства к устройству. Это может привести к проблемам с совместимостью, когда некоторые устройства не включали ЦС, которые необходимы приложениям для соединений, а также потенциальные проблемы безопасности, если ЦС, которые не соответствовали нашим требованиям безопасности, были включены на некоторые устройства.

Во-первых, убедитесь, что ваш ЦС должен быть включен в систему. Предварительно установленные ЦС предназначены только для ЦС, которые соответствуют нашим требованиям безопасности, поскольку они влияют на безопасные соединения большинства приложений на устройстве. Если вам нужно добавить CA для подключения к узлам, использующим этот CA, вы должны настроить свои приложения и службы, которые подключаются к этим узлам. Для получения дополнительной информации о настройке доверенных ЦС.

В приведенной выше ссылке вы можете найти всю необходимую информацию для доверия к настраиваемым ЦС с различными потребностями, такими как

  1. Доверие настраиваемых ЦС для отладки
  2. Доверять заказным ЦС для домена
  3. Доверяя добавленные пользователем CA для некоторых доменов
  4. Доверяя CA, добавленные пользователем, для всех доменов, кроме некоторых
  5. Доверие добавленных CA-центров для всех безопасных подключений

Итак, в основном вам нужно добавить файл конфигурации безопасности и настроить собственный CA (для Android 7.0 (API-уровень 24) и выше).

В вашем манифесте. Xml

<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config"
                    ... >
        ...
    </application>
</manifest>

В res/xml/network_security_config.xml:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config>
        <domain includeSubdomains="true">example.com</domain>
        <trust-anchors>
            <certificates src="@raw/my_ca"/>
        </trust-anchors>
    </domain-config>
</network-security-config>

Только для информации: - Если вы управляете центром сертификации, который, по вашему мнению, должен быть включен в Android, сначала заполните процесс включения в Mozilla CA, а затем подайте запрос функции на Android, чтобы CA добавили стандартизованный набор системных CA.

Дайте мне знать для дальнейшей помощи.

Надеюсь, что это поможет вам. Продолжайте кодирование !!!

Ответ 2

В дополнение к изменению способа настройки ответа Ca (@Pravin D), Android изменил способ загрузки сертификата pkcs12 с 6 по 7. Я выделяю важные элементы:

При импорте pkcs12 является ли корневым ЦС импортированным как доверенным?

  • Android 6: Да
  • Android 7: Нет

Где можно увидеть доверенные учетные данные?

  • Android 6: Settings ---> Security-->Trusted credentials (система и пользователь)
  • Android 7: Settings ---> Security-->Trusted credentials (вкладка системы и пользователя)

Как установить учетные данные пользователя?

  • Android 6: файл pkcs # 12, файл сертификата, программно
  • Android 7: файл pkcs # 12 (без закрытых ключей), файл сертификата, программно, настраиваемая конфигурация CA (ответ @Pravin D)

Где можно увидеть учетные данные пользователя (закрытые ключи)?

  • Android 6: недоступно из настроек
  • Android 7: Settings-->Security-->User credentials

Можно ли программным образом перечислять учетные данные пользователя?

  • Android 6: Нет
  • Android 7: Нет

Внимательно просмотрев код Android, встроенный Android Keystore намеренно скрыт, доступен только для использования в базовых классах Android. Невозможно реализовать обходной путь для перечисления учетных данных пользователя

Ответ 3

Я оказался в той же ситуации, в которой вы были, я надеюсь. Вы нашли решение для чтения сертификата из учетных данных пользователя на andoird 7?

Спасибо, Винод