Esta es una pregunta de seguimiento relacionada con esta respuesta .
En resumen: estoy importando el certificado de CA root autofirmado en el sistema Android a través de
Settings -> Security -> Trusted Credentials -> install from SD
La ruta difiere ligeramente en las diferentes versiones de Android.
Luego apuntar cualquier navegador (probado con Firefox, chrome y opera) al recurso seguro (basado en java script) y recibo un error de socket. El recurso es un index.html con lógica de web-socket js para conectarse de forma segura a un broker mosquitto.
Si, por el contrario, dirijo el navegador a "https://myserver:<mysecure port>"
Recibo una advertencia de privacidad, puedo continuar inseguro y esto de alguna manera establece una cookie u otra cosa de almacenamiento por lo que soy capaz de hacer futuras solicitudes sobre el recurso seguro basado en js.
Da la sensación de que los navegadores en Android no hacen uso de los certificados CA importados por el usuario del sistema, aunque aparezcan en el grifo de certificados de confianza "usuario" y en el área de credenciales de confianza.
Probado con Android 7.1.2 y 10. Todos los navegadores de escritorio funcionan bien, probado en ubuntu / menta y raspi.
¿Cómo realizar solicitudes TLS basadas en el navegador en Android sin aceptar riesgos de privacidad inseguros?
Prueba adicional:
He probado lo mismo en un IPhone 7 con ios 13.3, importando el certificado CA, poniendo el recurso seguro en un espacio web adecuado ya que el acceso a archivos locales no es posible en ios. Funcionó a la primera.
Así que parece ser un verdadero problema de Android. Podría tener sentido plantear esta cuestión a un espacio Android. ¿Podría alguien hacer una sugerencia por favor?
Más investigación:
Aquí es una explicación detallada sobre cómo introducir un certificado personalizado en la sección de certificados del sistema. Pero para ser sinceros, no es una forma habitual de hacerlo. El acceso root no es para el común de los mortales, además de que podría no funcionar en las versiones más recientes de Android.
Los certificados de usuario son para las aplicaciones Android escritas por ti mismo. Usted puede tener una vista líneas de configuración de la propiedad en app.config para trabajar con sus certificados de usuario autofirmado.
El navegador Chrome y otros, por otro lado, son una especie de aplicaciones del sistema o aplicaciones de los proveedores que no están hechas para conocer los certificados específicos de los usuarios. Y esa es la única razón válida por la que no conoce los certificados de la sección de usuario. Sólo conoce los certificados del sistema.
Así que la única manera que queda, parece ser hacer su propia aplicación o de alguna manera recompilar una aplicación completa del navegador configurándola para buscar los certificados de los usuarios.
Esto es bastante engorroso e insatisfactorio, ya que la web te daría todo lo que necesitas en cualquier dispositivo, excepto Android, por supuesto, que obliga a dar un rodeo.