Importar un certificado de cliente VPN en Android lleva un par de minutos. Comprobar que ha llegado al lugar correcto lleva más tiempo, y esa es la parte que casi todo el mundo se salta cuando el diálogo de instalación dice que todo ha ido bien. Un mensaje de éxito solo significa que el archivo se ha analizado. No dice nada sobre qué proveedor tiene la clave privada ni sobre si sigue habiendo una copia en tu carpeta Downloads.

Paso 1: Lee el P12 antes de que salga de tu máquina

Empieza por el propio archivo. Si no puedes nombrar el sujeto, el emisor y la fecha de caducidad que contiene, estás importando algo que después no podrás verificar.

Un paquete PKCS#12 normalmente lleva un certificado de cliente, su clave privada y la cadena del emisor. openssl pkcs12 -in client.p12 -info -noout imprime el MAC y los algoritmos de cifrado sin volcar material de clave, así que puedes ver si el paquete está protegido con contraseña y con qué cifrado. Síguelo con keytool -list -v -keystore client.p12 -storetype PKCS12 para obtener el alias, la huella SHA-256 y la ventana de validez que compararás con el teléfono.

Envía la contraseña por un canal distinto al del archivo, o entrega el archivo dentro de un flujo de distribución gestionado que no deje copia. Una contraseña pegada en el mismo mensaje de chat que el archivo comprimido convierte dos controles en uno.

Paso 2: Instálalo en la ranura que la aplicación VPN lee de verdad

En Android 11 hasta 14 de serie la ruta pasa por Ajustes, Seguridad, Cifrado y credenciales, Instalar un certificado, luego VPN y certificado de usuario de la aplicación. La redacción y el anidamiento cambian entre versiones y capas de fabricante, así que sigue la etiqueta del tipo de credencial en lugar de una posición de menú memorizada. En un perfil de trabajo, instala desde dentro del lado de trabajo, porque las credenciales no cruzan la frontera del perfil.

No pongas una identidad de cliente en la ranura de certificado CA. Esa ranura alimenta el almacén de confianza del usuario, y desde Android 7 las aplicaciones ignoran las CA añadidas por el usuario salvo que su configuración de seguridad de red lo permita, así que un certificado de cliente colocado ahí nunca aparece en el selector de claves de la VPN.

Algunos clientes VPN nunca tocan el almacén del sistema e importan el P12 en su propio directorio de aplicación. Es un diseño legítimo, pero cambia todos los pasos posteriores: la clave ahora vive dentro del sandbox de la aplicación y es exactamente tan fuerte como esa aplicación gestiona su propio almacenamiento. Consulta la documentación del cliente antes de dar por hecho que KeyChain interviene.

Paso 3: Demuestra qué proveedor tiene la clave

Una importación confirma el análisis, no el respaldo de hardware. En Android 12 y posteriores, KeyInfo.getSecurityLevel() informa de si una clave está en el Entorno de Ejecución de Confianza, en StrongBox o en software, y sustituye a la llamada más antigua isInsideSecureHardware(). Si el cliente VPN no muestra ese valor, la huella del paso 1 es tu alternativa. Un certificado recodificado durante la importación no coincidirá byte a byte, pero la clave pública y el sujeto sí lo harán.

No exportable no es lo mismo que inutilizable. Una clave que no puede salir del dispositivo todavía puede usarla cualquier aplicación que el usuario autorice a elegir ese alias, y por eso el aviso del alias es un control real y no una formalidad. La documentación de Android Keystore merece una lectura si vas a tomar esa decisión de diseño.

Después cuenta las copias que has hecho. El P12 de tu portátil, el del adjunto del ticket y el de la copia de seguridad del mes pasado siguen siendo identidades válidas hasta que el emisor las revoque. La protección de hardware de la instancia del teléfono no hace nada por esas.

Paso 4: Averigua quién es el dueño del requisito de bloqueo de pantalla

Aquí se confunden tres secretos: el PIN de desbloqueo del dispositivo, la frase de contraseña de la clave privada y la contraseña de la cuenta VPN. El aviso de uno nunca es una petición para restablecer los otros, y restablecer el equivocado es como la gente se queda fuera de un perfil que funcionaba bien.

Cuando un administrador de dispositivo o una política de perfil gestionado exige un bloqueo, el requisito pertenece a esa política, no al certificado. adb shell dumpsys device_policy enumera los administradores activos y la calidad de contraseña que imponen, que es la forma más rápida de ver si un agente MDM es la razón de que tus reglas de PIN hayan cambiado. Quitar el certificado no relajará la política, y quitar la política es una decisión administrativa y no un ajuste de configuración.

Espera también una contrapartida de usabilidad. Si la clave requiere autorización del usuario, el túnel no puede levantarse antes del primer desbloqueo, así que las sincronizaciones programadas y los despertares remotos fallan por diseño. Decídelo antes del despliegue, no después.

Evita el atajo de editar locksettings.db o de repetir un viejo truco para un patrón olvidado. Esas rutinas se escribieron para compilaciones concretas, pueden dejar el almacén de credenciales en un estado que el framework ya no espera, y nunca cambian la política que pidió el bloqueo en primer lugar.

Paso 5: Retira la identidad y verifica el rechazo

La retirada tiene tres partes y solo la primera es local. Elimina el perfil VPN, borra el certificado de usuario en Ajustes, Seguridad, Cifrado y credenciales, Credenciales de usuario, y luego haz que el emisor revoque el número de serie del certificado. El borrado local por sí solo deja una credencial que el servidor sigue aceptando si alguien guardó el P12.

Verifica el resultado en lugar de suponerlo. Prueba una conexión con el perfil retirado y confirma que el servidor la rechaza. Un túnel que todavía se levanta significa que has revocado el número de serie equivocado o que el cliente ha vuelto en silencio a otra identidad instalada.

Si estás revirtiendo una importación fallida, vuelve a importar desde el paquete cifrado original y vuelve a comprobar la huella en lugar de reutilizar un archivo de clave descifrado que hayas dejado en el disco.

Artículos relacionados