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

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

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

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

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

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

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

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

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

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

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

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

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

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

В вашем manifest.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.

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

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

В дополнение к изменению способа настройки ответа 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. Невозможно реализовать обходной путь для перечисления учетных данных пользователя