Editar: Después de leer esta pregunta y respuesta Tengo un poco más de un entendimiento. Mi pregunta ahora es: ¿puedo usar un certificado que un usuario haya firmado por una CA registrada, como VeriSign, GoDaddy, etc., en lugar de firmar un certificado? Si es así, ¿qué mecanismo necesito usar para verificarlo? ¿CRL o OCSP tendrán detalles de todas las CA o tendré que revisar sus registros individuales?
Original: Me gustaría saber cómo verifico la validez de los certificados de varias entidades emisoras de certificados con fines de autenticación mutua en un sitio web, o si esto es incluso un problema que debe considerarse.
Estoy en el proceso de aprender sobre la autenticación mutua y cómo funciona, junto con la firma del certificado en general, por lo que se agradecería cualquier puntero o referencia para leer para entender este tema.
Actualmente tengo un servidor Ubuntu simple que se ejecuta en un VirtualBox que estoy usando para experimentar. Esto ejecuta nginx y mysql, los cuales están configurados para requerir TLS / SSL. El siguiente paso que quiero implementar es la autenticación mutua entre nginx y el navegador del cliente; Lo he configurado con éxito en el servidor utilizando un certificado CA autofirmado. Sin embargo, me cuesta entender cómo se verifica el certificado enviado por el navegador.
Tengo un par de claves pública / privada en el sistema operativo host, y posiblemente podría generar una solicitud de firma de certificado y enviarla al servidor invitado, que podría firmarla contra el certificado de CA y devolverla a mi host. Este certificado será firmado, pero no por una CA registrada. Yendo un paso más allá, ahora visito otro sitio web que no controlo: ¿es necesario que también firme mi certificado?
Entiendo que una vez que se haya firmado un certificado, no es necesario volver a firmarlo, excepto para la renovación. Esto solo es cierto si está firmado por una CA registrada, como GoDaddy, CACert, etc. Por lo tanto, volviendo a mi sitio web, ¿cómo puedo saber si se trata de un certificado válido? Si utilizo CRL o OCSP para verificar si ha sido revocado o no, ¿comprobará si hay todos los proveedores o solo la compañía que mantiene la lista / servidor?
Suponiendo que de una forma u otra puedo validar la autenticidad del certificado, ¿cómo lo utilizo para autenticar (o, supongo con más precisión, autorizar) al usuario específico? ¿Debo guardar una copia de su clave pública y verificar esto o es posible extraer algunos detalles únicos que me permitan autorizarlos?
Esta es un área nueva para mí y, sin duda, he hecho algunas suposiciones incorrectas y también he expuesto algunas lagunas en mi conocimiento y comprensión del tema. Apreciaría cualquier respuesta que ayude a corregir esto. Además, si la pregunta no es lo suficientemente específica para las reglas del foro, me disculpo y cualquier orientación sobre cómo encuadrarlo mejor para que no viole las reglas sería útil.