qué pkcs instalar generar certificados certificado archivo android ssl pkcs#12 android-7.0-nougat android-7.1-nougat

android - pkcs - Lista de certificados almacenados en credenciales de usuario.



pkcs># 12 (2)

En Android 7 Nougat, el certificado instalado por el usuario va a "Credenciales de usuario" en lugar de "Credenciales de confianza" (que consiste en la credencial del sistema y la credencial del usuario).

Solía ​​acceder a "credenciales de confianza" por:

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

A través del código anterior, puedo acceder a las credenciales de confianza del usuario y del sistema.

Pero ahora, en Android 7, el certificado instalado por el usuario va a un lugar separado llamado "Credenciales de usuario" en Settings --> Security --> User credentials .

Mi pregunta es ¿cómo puedo enumerar de manera programática las credenciales dentro de las credenciales de User credentials en Android 7?


Además de cambiar la forma de configurar el Ca (respuesta @Pravin D), Android ha cambiado la forma en que se carga un certificado pkcs12 de 6 a 7. Resalto los elementos importantes:

Al importar un pkcs12, ¿se importa la CA raíz como confiable?

  • Android 6: si
  • Android 7: No

¿Dónde puedo ver las credenciales de confianza?

  • Android 6: Settings ---> Security-->Trusted credentials (sistema y usuario)
  • Android 7: Settings ---> Security-->Trusted credentials (sistema y pestaña de usuario)

¿Cómo instalar credenciales de usuario?

  • Android 6: archivo pkcs # 12, archivo de certificado, programáticamente
  • Android 7: archivo pkcs # 12 (sin claves privadas), archivo de certificado, programáticamente, configuración de CA personalizada (@ Pravin D respuesta)

¿Dónde puedo ver las credenciales de usuario (claves privadas)?

  • Android 6: no disponible desde la configuración
  • Android 7: Settings-->Security-->User credentials

¿Es posible listar las credenciales de los usuarios programáticamente?

  • Android 6: No
  • Android 7: No

Al revisar el código de Android en profundidad, el almacén de claves interno de Android se oculta intencionalmente, solo está disponible para usar desde las clases básicas de Android. No es posible implementar una solución alternativa para listar las credenciales de usuario


Para proporcionar una experiencia más consistente y segura en todo el ecosistema de Android, comenzando con Android Nougat, los dispositivos compatibles confían solo en las CAs sistemas estandarizados que se mantienen en AOSP .

Anteriormente, el conjunto de pre-installed CAs agrupadas con el sistema podía variar de un dispositivo a otro. Esto podría dar lugar a problemas de compatibilidad cuando algunos dispositivos no incluían las CA que necesitaban las aplicaciones para las conexiones, así como posibles problemas de seguridad si las CA no cumplían con nuestros requisitos de seguridad en algunos dispositivos.

Primero, asegúrese de que su CA debe estar incluida en el sistema. Las CA preinstaladas son solo para CA que cumplen con nuestros requisitos de seguridad porque afectan las conexiones seguras de la mayoría de las aplicaciones en el dispositivo. Si necesita agregar una CA para conectarse a los hosts que usan esa CA, debe personalizar sus aplicaciones y servicios que se conectan a esos hosts. Para obtener más información sobre la personalización de CA confiables .

En el enlace anterior puede encontrar toda la información necesaria para confiar en las CA personalizadas con diferentes necesidades, como

  1. Confiando en las CAs personalizadas para la depuración
  2. Confiando en CAs personalizadas para un dominio
  3. Confiando en las CA agregadas por el usuario para algunos dominios
  4. Confiando en las CA agregadas por el usuario para todos los dominios excepto algunos
  5. Confiando en las CA agregadas por el usuario para todas las conexiones seguras

Por lo tanto, básicamente necesita agregar un archivo de configuración de seguridad y configurar una CA personalizada (para Android 7.0 (nivel de API 24) y superior).

En tu manifest.xml

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

En 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>

Solo para información: - Si opera una CA que cree que debería incluirse en Android, primero complete el Proceso de inclusión de Mozilla CA y luego presente una solicitud de función contra Android para que la CA se agregue al conjunto estandarizado de CA del sistema.

Déjame saber para más ayuda.

Espero que esto te ayudará. Sigue codificando !!!