¿Se puede usar un certificado x.509 solo para la autenticación de usuarios?

0

tenemos un escenario para implementar SSO usando certificados x.509. Un cliente seguro descargará un certificado x.509 (solo el certificado ... no hay una clave privada disponible) cuando el usuario inicie sesión en la máquina de Windows. A partir de ahora, para todas las aplicaciones web, nos gustaría leer este certificado para autenticar al usuario. cuando intentamos leer los certificados del navegador (configurando tomcat para solicitar el certificado del cliente), pudimos leer solo los certificados con clave privada. no se puede leer el certificado x.509 presentado por el cliente seguro.

¿Puede alguien ayudarme a leer el certificado x.509 del lado del servidor? ¿O solo los certificados con clave privada solo podrían usarse para este propósito?

    
pregunta user997811 01.04.2014 - 06:07
fuente

2 respuestas

1

Lo que usted describe es impracticable.

Sin volver a escribir la implementación SSL en el cliente y el servidor, el cliente debe tener la clave privada para el intercambio. La autenticación proviene del uso de CN como identificador para el usuario; por lo tanto, para los servidores web contiene el nombre IP del servidor. Para autenticar direcciones de correo electrónico, el CN contiene el ADDR_SPEC. Lo que pongas en tu CN depende de ti.

Hay una complicación adicional en su método propuesto: el usuario debe instalar el certificado, aunque esto no es muy complejo.

No puede evitar que un sitio web de un tercero teman los detalles del certificado del cliente si el usuario navega a ese sitio (ISR) es posible restringir el uso de certificados de clientes a sitios específicos, pero no recuerda los detalles ). Pero no pueden ver la clave privada (a través de las conexiones SSL / TLS).

Su insistencia en no proporcionar la clave privada al cliente hace imposible cualquier uso de certificados de clientes.

    
respondido por el symcbean 01.04.2014 - 11:42
fuente
0

No, o al menos no para ningún mecanismo de autenticación de usuario robusto . (Es cierto que el certificado casi seguramente contiene más entropía que una contraseña de usuario típica, pero ese no es el punto aquí).

Sin una clave, no se pueden realizar las operaciones de descifrado y firma, estas son críticas para X.509.

Una analogía podría aclararlo: en comparación con un nombre de usuario y el método de autenticación secreto compartido , el certificado es análogo al Nombre de usuario, y la clave análoga al secreto. (Estoy usando un secreto compartido como ejemplo, no una contraseña, porque el secreto compartido no se transfiere como parte de la autenticación. Ambas partes demuestran que conocen el mismo secreto en lugar de simplemente descifrar una contraseña para compararla; Las claves privadas tampoco se transfieren.)

Esto realmente es una simplificación excesiva, sin embargo, la magia de un sistema asimétrico como RSA significa que ni siquiera existe un secreto compartido (más precisamente, no hay secreto compartido de antemano, uno se negocia por conexión para el cifrado simétrico ). En TLS con un certificado de cliente , el servidor garantiza que el cliente esté en posesión de la clave al requerir que el cliente envía una firma de los mensajes de protocolo de enlace TLS que el servidor verificará. Sin clave significa que no hay firma, y la configuración de TLS fallará.

    
respondido por el mr.spuratic 01.04.2014 - 11:48
fuente

Lea otras preguntas en las etiquetas