¿Qué CA raíz de confianza se incluyen en Android de forma predeterminada?

21

No parece haber un recurso central de Android que enumere las CA raíz confiables incluidas en el sistema operativo o el navegador predeterminado ( pregunta relacionada en SO ), entonces, ¿cómo puedo averiguar cuáles están incluidas en mi teléfono de manera predeterminada?

Con la cantidad de certificados raíz que se han visto comprometidos y la cantidad de certificados SSL fraudulentos creados en los últimos años, este es un problema para cualquiera que confíe en SSL para la seguridad, ya que de lo contrario no sabrá si desea eliminar cualquier CA confiable .

(no enumero mi fabricante o la versión del sistema operativo ya que estoy buscando un recurso genérico o una solución que debería ser aplicable a cualquier dispositivo)

GAThrawn
fuente
1
He usado esta aplicación (se requiere root) para enumerar y eliminar certificados raíz individuales: CACertMan o en Play Store . El proyecto guradian también mantiene una versión editada del almacén de claves estándar: github.com/guardianproject/cacert
ce4
El enlace de Play Store en el comentario anterior es incorrecto - Aquí está el correcto Play Store
Michael Kohne
1
@Michael: Gracias por la pista, parece que me equivoqué con mi búfer de copiar / pegar (dejando el comentario, ya que usted y eldarerathis proporcionaron el correcto)
ce4

Respuestas:

17

En ICS o posterior , puede verificar esto en su configuración . Vaya a Settings->Security->Trusted Credentialspara ver una lista de todas sus CA de confianza, separadas por si fueron incluidas con el sistema o instaladas por el usuario.

Las versiones anteriores de Android mantienen sus certificados /system/etc/securityen un paquete cifrado llamado cacerts.bksque puedes extraer usando Bouncy Castle y el keytoolprograma. El resumen es extraer primero el paquete usando adb(necesita un shell de raíz) y luego puede usar Bouncy Castle para enumerar el contenido del paquete:

shell~$ adb pull /system/etc/security/cacerts.bks`
shell~$ keytool -keystore cacerts.bks -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass changeit -v -list

También hay al menos una aplicación que puedes probar si prefieres no usar el shell: CACertMan (requiere root para modificar la lista, pero debería permitirte ver la lista sin root). Creo que se produjo debido al fiasco de DigiNotar ya que no había formas particularmente fáciles para que un usuario revoque el certificado en ese momento. Dado que los certificados se almacenan de manera diferente en ICS y más tarde, esta aplicación solo funcionará en dispositivos que ejecuten Gingerbread (o anterior), pero de todos modos es obsoleta en ICS / JB.

eldarerathis
fuente
Sí, vino a causa de DigiNotar. Root solo es necesario para editar CA (p. Ej., CA estatales chinas), no para ver, supongo (IIRC).
ce4
@ ce4: no recuerdo si necesita root solo para navegar con CACertMan o no, lo comprobaré muy rápido. Actualización: creo que tienes razón, puedo enumerarlos si le niego el acceso a la raíz, simplemente no puedo guardar una lista modificada. Lo aclararé.
eldarerathis
¿Hay alguna forma (enraizada) de editar / agregar certificados desde el shell? El método de Configuración afirma que es exitoso en mi tableta, pero los certificados no están realmente instalados.
Michael