Estoy trabajando en una aplicación web con una API simple que requiere autenticación. Para la naturaleza de mi aplicación, los usuarios tienen dos claves RSA, para firmar y cifrar mensajes. Mi protocolo funciona basado en ello. La aplicación web tiene acceso a claves públicas.
Una solución para lograr la autenticación y eliminar MITM es crear SSL sobre la API de la aplicación y crear un método de autenticación utilizando las claves del usuario. Pasar mensajes simples. Pero estoy pensando en otro método ... Hacer autenticación basada en la certificación de cliente SSL. Usé certificados de cliente para proyectos anteriores, pero tengo algunos problemas para decidir si usarlo para este proyecto:
-
¿Es una mala idea usar una de las claves RSA del usuario para generar el certificado?
-
¿Hay algún servidor web (como contenedor de SSL) que pueda permitirme extender las funcionalidades durante la negociación de SSL con un programa externo? Me refiero a que cuando el usuario envía una solicitud de SSL, busco su certificado en una base de datos (a) y si lo encuentro, inserte un registro en una base de datos como ID de sesión y la aplicación web usa este (b). Esto significa no solo dar acceso a algunos usuarios, sino descubrir qué usuario está conectado. RESPUESTA : al menos nginx admite pasar el certificado de cliente recibido a la aplicación web. Pasé por esto.
-
Análisis sobre el rendimiento. Dudo acerca del gran número de usuarios y de este rendimiento de autenticación basada en certificados, pero la autenticación es una parte de mi aplicación que se debe hacer y SSL también. ¿Qué carga adicional y latencia puedo esperar al usar los certificados de servidor y del cliente en comparación con el uso de certificados de servidor? RESPUESTA : consulte respuesta .
de MadHatter.
Gracias por tus sugerencias y disculpa mi mal inglés.