¿Cómo se puede implementar la comunicación segura del servidor del cliente utilizando certificados como durante la autenticación que pasa la información del usuario al servidor en la aplicación de Android?

Gracias por A2A. Tomé algunas palabras de su pregunta y hay varias formas en que esto se puede implementar. Voy a mantener mi respuesta genérica como la misma para Android, iOS o cualquier comunicación entre el Cliente y el Servidor.

Comunicación segura del servidor del cliente :

Esto significa proteger todos los datos entre el cliente y el servidor, no solo la información del usuario o la autenticación. Haces esto por

a) Comuníquese con el servidor a través de HTTPS / TLS con un certificado válido adecuado.

b) o puede encriptar los datos usted mismo e intercambiar a través de HTTP o cualquier otro protocolo, pero los datos están encriptados y la integridad se verifica en el extremo receptor.

Usando certificados :
La siguiente parte de su pregunta tiene “Uso de certificados”. Esto podría significar cualquier cosa. Así que aquí hay algunas maneras.

a) Puede usar certificados para HTTPS / TLS solo en el extremo receptor. Entonces el cliente se comunicará con el servidor a través de HTTPS / TLS.

b) Utiliza certificados tanto para el cliente como para el servidor. Esto se llama “Autenticación mutua”. Entonces, cuando establece una conexión HTTPS / TLS con el servidor, normalmente está validando que el servidor con el que está hablando es un servidor válido mediante la validación del nombre de dominio totalmente calificado. (https://quora.com) vs. https://somequora.com devolverá un error, puede que no haya un dominio válido.

Con la autenticación mutua, el servidor valida que el cliente es válido y está en una de sus entradas de confianza.

Durante la autenticación / aprobación de la información del usuario :

Si solo le preocupa proteger la información del Usuario, entonces HTTPS con un certificado válido de una CA conocida es lo suficientemente bueno. La mayor parte de la autenticación funciona de esta manera enviando datos a través de HTTPS.

Pero si desea utilizar certificados para la autenticación, esto se llama “Autenticación basada en certificados”, también puede implementar esto de diferentes maneras. Simplemente puede confiar en SSL mutuo (déjelo en su capa HTTPS / TLS para hacer el apretón de manos) y una vez que tenga éxito, puede tomar la “identidad” presentada en el certificado del cliente para crear una sesión de inicio de sesión válida.

Hay otras formas de implementar lo mismo. Pero todo eso requiere “Aprovisionamiento de certificados de cliente”.

Aprovisionamiento de certificados de cliente :

¿Qué significa esto? Si desea identificar a su cliente utilizando certificados, cada cliente, es decir, cada instancia de su aplicación debe tener su propio Certificado Único. A alto nivel,

a) Tienes que generar un certificado localmente.

b) Registre la clave pública de alguna forma (SCEP o XKMS o muchos otros estándares) con la validación de que el certificado pertenece a su cliente.

c) Gestionar la revocación / ciclo de vida del certificado.

en Android debe asegurarse de que los certificados no se puedan copiar. Según el dispositivo y la versión y configuración de Android (habilitada por el usuario), hay muchas formas en que esto puede verse comprometido.

Espero que esto ayude. Avísame si tienes alguna pregunta específica.