0 votos

Importar/Instalar certificado SSL sin bandera CA

Nuestro equipo tiene el siguiente problema:
Estamos desarrollando una aplicación cliente para Android e iOS usando Unity + UniWebview + HTML. Esta aplicación incluye peticiones de Ajax a algunos servidores a través de jQuery. Para propósitos de prueba estamos usando un servidor de prueba en lugar del servidor activo. Este servidor de prueba utiliza un certificado SSL autofirmado. NOTA: No tenemos acceso a ese servidor, así que cambiar el certificado SSL no es una opción.
Al probar el archivo .htm localmente con el navegador de escritorio acabamos de importar ese certificado SSL a Chrome y Mozilla Firefox. Con este enfoque nuestro código HTML funcionó como se esperaba.

Ahora queríamos probarlo en nuestro entorno UniWebview en un dispositivo Android. Al principio la aplicación no funcionó. Mientras probábamos el archivo .htm en el navegador móvil chrome, las solicitudes fueron bloqueadas por el no confiable certificado SSL. Así que buscamos una solución para importar el certificado a Android.

La solución más común que encontramos, fue exportar el certificado en cromo o en firefox y copiarlo en la unidad de la tarjeta SD del dispositivo. Entonces: Configuración > Seguridad > Instalar desde el almacenamiento USB, luego seleccionar el certificado e instalarlo. Después de la instalación recibimos el mensaje de una instalación exitosa. Pero cuando lo buscamos en la lista de certificados de usuario, no aparece. Después de probar nuestro script nuevamente tampoco funciona. Probamos esta solución un par de veces experimentando con diferentes formatos y codificaciones, pero cada vez obtuvimos el mismo resultado.

El segundo intento fue usar la aplicación CAdroid para importar certificados SSL a Android. Pero allí también nos encontramos con un problema. En el paso 4 (comprobación del certificado) recibimos un mensaje erróneo de que faltaban las restricciones básicas. Por lo tanto no hay un conjunto de bandera CA, por lo tanto la bandera CA no es verdadera.

El tercer intento fue usar el emulador de Androids del Android SDK. Esta vez tuvimos el mismo problema que en el primer intento, al instalar el certificado directamente en Android.

TL;DR
Así que mi pregunta: ¿Es posible instalar este certificado autofirmado en Android sin teniendo una bandera CA establecida?
Si no es así, ¿es posible modificar ese certificado existente para que pueda ser instalado?
NOTA: Crear un nuevo certificado NO es una opción real.
NOTA: Sólo tenemos los archivos del certificado, que exportamos con cromo y Firefox
Encontré este puesto: La instalación del certificado autofirmado dice que ha sido un éxito, pero Android actúa como si el certificado no existiera. . En los comentarios se habla de modificar un certificado existente, aunque no estoy seguro de que sea una opción para nosotros.

Dispositivo de prueba: Samsung GT-N8010 (Galaxy Note 10.1) Android 4.4.2

Saludos cordiales

0voto

Steffen Ullrich Puntos 116

¿Es posible instalar este certificado autofirmado en Android sin tener una bandera CA establecida?

Android utiliza OpenSSL (o el tenedor BoringSSL en versiones posteriores) como la pila SSL subyacente. OpenSSL no aceptará un certificado autofirmado a menos que la bandera de la CA sea verdadera, porque incluso un certificado autofirmado debe tener las banderas correctas para que pueda firmar por sí mismo (es decir, la bandera de la CA). Por lo tanto, aunque se pueda instalar el certificado, no se utilizará como ancla de confianza para la validación, es decir, la validación fallará.

Si no es así, ¿es posible modificar ese certificado existente para que pueda ser instalado? NOTA: La creación de un nuevo certificado NO es una opción real.

No, no se puede modificar un certificado existente. Probablemente podría recrear el certificado si tiene acceso al certificado original y a la clave privada.

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