6 votos

Instalar CA sin tener que activar el bloqueo de la pantalla

Tengo un Nexus 7 (Android 4.1.1) y quiero añadir una CA (Autoridad de Certificación) a mi dispositivo para usarlo para la conexión ssl a mi servidor de correo. La CA es autofirmada. El Certificado sólo contiene la clave pública de la CA (¡por supuesto!).

También quiero mantener mi bloqueo de pantalla desactivado porque en una tablet que no sale de mi casa no tiene sentido tener un bloqueo de pantalla.

Ahora surge el problema: Cada vez que quiero importar la CA, Android quiere que cambie mi reloj de pantalla a dígitos/contraseña que quiero evitar.

¿Se puede prevenir este comportamiento de alguna manera? No hay nada crítico para la seguridad en una llave pública de una CA.

Sé que cuando el teléfono está rooteado se puede añadir un CA, pero quiero evitar rootear mi teléfono.

2voto

sgiebels Puntos 41

He escrito un artículo sobre la creación e instalación de certificados CAcert como certificados del sistema Android (Android >=4.2), lo que le permite utilizar su dispositivo sin pantalla de bloqueo:

http://wiki.pcprobleemloos.nl/Android/cacert

La parte principal de mi artículo:

cat root.crt > 5ed36f99.0
openssl x509 -inform PEM -text -in root.crt -out /dev/null >> 5ed36f99.0
cat class3.crt > e5662767.0
openssl x509 -inform PEM -text -in class3.crt -out /dev/null >> e5662767.0

Copia los archivos 5ed36f99.0 y e5662767.0 a /system/etc/security/cacerts/ (y chmod 644 ellos), reboot y debería funcionar. Comprueba Configuración -> Seguridad -> Certificados, debería listar tanto "CAcert Inc." como "Root CA". Tenga en cuenta que algunos navegadores pueden usar su propio almacén de certificados en lugar del de Android.

El modelo de seguridad de Android obliga explícitamente a tener una pantalla de bloqueo cada vez que se instala un certificado que no es de sistema (de usuario). No hay ninguna opción de configuración alrededor de esto.

Puedes reemplazar tu versión de Android por una que haya eliminado este requisito (no creo que exista ninguna, pero teóricamente podrías crear la tuya propia).

La otra opción es usar el acceso Root (temporal) para instalar este certificado, y luego 'desarraigarlo', aunque eso suena un poco tonto.

1voto

Jack Miller Puntos 111

Lo siento, se requiere acceso root AFAIK. Para todos los que tienen acceso Root y Android 4+, aquí una descripción detallada de cómo añadirlo a la carpeta de certificados del sistema de Android:

Suponiendo que su archivo de certificado - llamémoslo root.cer - se ve así:

-----BEGIN CERTIFICATE-----
MIIDgzCCAmugAw[...]
[...]
-----END CERTIFICATE-----

Obtenga el nombre que Android necesita para ello (se añade ".0") y almacénelo en la variable $name :

name=$(openssl x509 -inform PEM -subject_hash_old -in root.cer | head -1).0

Muestra de salida para: echo $name

00673baa.0

Crear el archivo de certificado para Android:

cat root.cer > $name
openssl x509 -inform PEM -text -in root.cer -out /dev/null >> $name

Copie el archivo del certificado en la tarjeta SD:

adb push $name /sdcard

Abrir el shell de Android:

adb shell

Conviértete en Root y copia el certificado en la carpeta de certificados del sistema de Android:

su
mount -o remount,rw /system
cp /sdcard/00673baa.0 /system/etc/security/cacerts/

Nota: Para el último comando es necesario sustituir el nombre del archivo del certificado.

Ahora se reinicia. Asegúrese de que el certificado se ha instalado correctamente: Ir a Settings -> Security -> Show trusted certificates . Aquí, en la lista del sistema, debería encontrar el nombre del emisor de su certificado autofirmado (que es igual al asunto). Puedes imprimirlo usando:

openssl x509 -inform PEM -issuer -in root.cer -out /dev/null

Ahora puedes eliminar todos los certificados (los del sistema no se tocan) y quitar la pantalla de bloqueo.

0voto

martinatime Puntos 1863

No hay forma de que sepa cuál de ellas logrará esto. He estado buscando una manera de hacer lo mismo desde hace un tiempo, ya que mi trabajo requiere que use un CA, pero no he encontrado nada después de mucho buscar. Si estuvieras rooteado entonces podría ser posible, pero sin root me temo que vas a tener que lidiar con ello.

¡Perdón!

0voto

Kaz Dragon Puntos 3460

En caso de que decidas rootear el teléfono (sólo puedes enraizarlo temporalmente para instalar los certificados, no es necesario que permanezca rooteado), puedes subir los certificados a un directorio y en el próximo reinicio serán validados:

adb shell mount -o remount,rw /system
adb push 1dbdda5d.0 /system/etc/security/cacerts/

donde 1dbdda5d.0 es su certificado de confianza.

-1voto

guttermonk Puntos 21

Encontré una forma de resolver el problema, pero requiere Root y puede que sólo funcione con CAs Root, autofirmadas o intermedias.

Si tienes un certificado que no es de confianza para Android, cuando lo añades, va al almacén de certificados personales. Cuando añades un certificado en este almacén de certificados personales, el sistema requiere un nivel de seguridad más alto para desbloquear el dispositivo. Pero si consigues añadir tu cert al almacén del sistema entonces no tienes este requisito. Obviamente, se requiere Root para añadir un certificado al almacén del sistema, pero es muy fácil.

Aquí se explica cómo hacerlo:

1 - Añada su certificado normalmente. Por ejemplo, mi certificado se llama some.crt . Se guardará en tu tienda personal y Android te pedirá un pin/contraseña... Proceda.

2 - Con un gestor de archivos con capacidades de Root, examine los archivos en /data/misc/keychain/cacerts-added o /data/misc/keystore . Debería ver un archivo aquí llamado 1000_USRCERT_some es el certificado que has añadido en el paso 1.

3 - Mueve este archivo a system/etc/security/cacerts (tendrá que montar la partición del sistema r/w)

4 - Reiniciar el teléfono

5 - Ahora puede borrar el pin/contraseña que ha establecido para desbloquear el dispositivo.

A mí me funcionó con un certificado autofirmado en Android 4.4.2. ¡Espero que sea de ayuda!

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X