Чтобы обеспечить более последовательную и безопасную работу в экосистеме Android, начиная с Android Nougat, совместимые устройства доверяют только стандартизированной системе, CAs
поддерживаемой в AOSP.
Ранее набор pre-installed CAs
в комплекте с системой мог варьироваться от устройства к устройству. Это могло привести к проблемам совместимости, если на некоторых устройствах не было ЦС, необходимых приложениям для подключения, а также к потенциальным проблемам безопасности, если ЦС, не отвечающим нашим требованиям безопасности, были включены на некоторые устройства.
Во-первых, убедитесь, что ваш ЦС должен быть включен в систему. Предустановленные центры сертификации предназначены только для тех центров сертификации, которые соответствуют нашим требованиям безопасности, поскольку они влияют на безопасные соединения большинства приложений на устройстве. Если вам нужно добавить ЦС для подключения к хостам, которые используют этот ЦС, вам следует вместо этого настроить свои приложения и службы, которые подключаются к этим хостам. Для получения дополнительной информации об настройке доверенных центров сертификации.
По приведенной выше ссылке вы можете найти все необходимая информация для доверительных пользовательских центров сертификации с различными потребностями, такими как
- Доверие кастомным центрам сертификации для отладки
- Доверие кастомным центрам сертификации для домена
- Доверие ЦС, добавленным пользователями, для некоторых доменов
- Доверие ЦС, добавленным пользователем, для всех доменов, кроме некоторых
- Доверие добавленным пользователем центрам сертификации для всех безопасных соединений
Итак, в основном вам нужно добавить файл конфигурации безопасности и Настройка пользовательского центра сертификации (для 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, чтобы ЦС был добавлен в стандартизированный набор системных ЦС.
Дайте мне знать для любой дальнейшей помощи.
Надеюсь, что это поможет вам. Продолжай кодить!!!
person
Pravin Divraniya
schedule
22.11.2016
<certificates src="user"/>
в<trust-anchors>
, однако мое приложение по-прежнему не доверяет моему сертификату, расположенному в разделе «Учетные данные пользователя». - person Mellon   schedule 03.11.2016Settings-->Security-->User credentials
. Он показывает сертификат и закрытые ключи, установленные пользователем, а не доверенные сертификаты. Android6 может управлять пользовательскими сертификатами, но вы не видите их в настройках, только корневые центры сертификации. При установке PKCS#12 закрытый ключ доступен в KeyChain, а корневой ЦС может быть установлен как доверенные учетные данные пользователя вAndroidCAStore
. AndroidCAStore содержит пользовательские и системные записи, и это то, что вы видите в Android 6 и 7. Если вы ищете способ перечислить закрытые ключи (содержимое учетных данных пользователя), API не существует. - person pedrofb   schedule 17.11.2016Settings ---> Security-->Trusted credentials(Users tab)
, но в Android 7 он переходит кSettings --> Security-->User credentials
, которому не доверяют. Мой вопрос: как я могу узнать, что в Android 7 мой сертификат установлен вSettings-->Security-->User credential
? Мой сертификат НЕ МОЖЕТ быть указан в AndroidCAStore, я пробовал. AndroidCAStore перечисляет только доверенные записи. - person Mellon   schedule 17.11.2016Settings-->Security-->User credential
, но корневой ЦС не установлен вAndroidCAStore
. Вы должны установить его вручную. Я экспортировал общедоступный сертификат как.cer
из.pfx
и установил, а затем отображается - person pedrofb   schedule 17.11.2016Settings-->Security-->User credentials
. Кажется, для этого нет официального API. Вот почему я публикую этот вопрос. - person Mellon   schedule 18.11.2016Settings-->Security-->User credentials
. - person Mellon   schedule 18.11.2016