Чтобы обеспечить более последовательное и безопасное использование экосистемы Android, начиная с Android Nougat, совместимые устройства доверяют только стандартизированной системе CAs
, поддерживаемой в AOSP.
Раньше набор pre-installed CAs
в комплекте с системой может варьироваться от устройства к устройству. Это может привести к проблемам с совместимостью, когда в некоторых устройствах не было CAs, которые необходимы для соединений, а также потенциальных проблем безопасности, если CAs, которые не соответствовали нашим требованиям безопасности, были включены на некоторые устройства.
Во-первых, убедитесь, что ваш ЦС необходимо включить в систему. Предварительно установленные ЦС предназначены только для ЦС, которые соответствуют нашим требованиям безопасности , поскольку они влияют на безопасные подключения большинства приложений на устройстве. Если вам нужно добавить ЦС для подключения к хостам, использующим этот ЦС, то следует настроить ваши приложения и службы, которые подключаются к этим хостам. Для получения дополнительной информации о Customizing trusted CAs.
В выше link вы можете найти всю необходимую информацию для доверяя пользовательские УЦ с различными потребностями, как
- доверяя пользовательский УЦ для отладки
- Доверяя пользовательские центры сертификации для домена
- Доверяя USER- добавленные ЦС для некоторых доменов
- Доверие добавленных ЦС для всех доменов, за исключением некоторых
- Trust ING добавил пользователь ЦА для всех защищенных соединений
Так основном вам нужно добавить Security Configuration File и Configure a custom CA (для Android 7.0 (уровень 24 API) и выше).
В вашем Manifest.xml
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config"
... >
...
</application>
</manifest>
В Рез/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 Inclusion Process, а затем подать feature request против Android, чтобы иметь CA добавил к стандартизованному набору системных ЦС.
Сообщите мне о дальнейшей помощи.
Надеюсь, это вам поможет. Продолжайте кодирование !!!
Чтение документов Я бы предположил, что приложение имеет неявный доступ к сертификатам пользователя, если сконфигурировано с помощью [] (https://developer.android. com/training/articles/security-config.html # trust-anchors) (так как это автоматически делается для приложений для AP23 и ниже). Я не читал ничего, что есть способ для явного доступа к хранилищу учетных данных пользователя. –
Robert
Я добавил '<сертификаты src =" user "/>' in '', однако мое приложение все еще не доверяет моему сертификату, который находится в разделе «User credentials». –
Mellon
Я думаю, что вы можете быть недоразумением «Настройки -> Безопасность -> Пользовательские учетные данные». Он показывает сертификат и закрытые ключи, установленные пользователем, а не доверенные сертификаты. Android6 может управлять сертификатами пользователей, но вы не можете видеть их в настройках, только корневые ЦС. Когда вы устанавливаете PKCS # 12, закрытый ключ доступен в KeyChain, а корневой ЦС может быть установлен как доверенные учетные данные пользователя в 'AndroidCAStore'. AndroidCAStore содержит пользовательские и системные записи, и это то, что вы видите в Android 6 и 7. Если вы ищете способ перечислить секретные ключи (содержимое учетных данных пользователя), API отсутствует. – pedrofb