Certificados de cliente HTTPS para servidor a servidor

3

Supongamos que tiene dos servidores con certificados que prueban sus dominios (por ejemplo, para usar con HTTPS).

¿Puede uno de estos servidores usar su certificado como certificado de cliente cuando habla con el otro, de modo que ambos servidores puedan estar seguros del nombre de dominio del otro? P.ej. " enlace " puede obtener una solicitud de la que está seguro que proviene de " enlace ", por lo que puede enviar de forma segura secretos específicos para ese dominio (incluso si nunca antes ha visto ese dominio).

(EDITAR: Estoy consciente de que la autenticación del cliente existe en general para TLS, pero me interesa particularmente si los mismos certificados de la PKI "https" se pueden usar como certificados de clientes. Por ejemplo, las marcas de uso podrían evitar que "solo funcionen" con las implementaciones existentes.)

    
pregunta cloudfeet 30.03.2015 - 18:32
fuente

3 respuestas

1

Sí. Si es permitido por EKU.

Puede usar un certificado / clave como certificado de cliente si eso está permitido dentro del certificado. Es decir, si se permite TLS Web Client Authentication dentro de la sección Extended Key Usage (EKU).

Por ejemplo: en el certificado de example.com está realmente permitido. (No lo sabía).

$ echo -n | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

Parece estar muy extendido.

Muestra rápida de los grandes sitios web a continuación.

$ echo -n | openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

$ echo -n | openssl s_client -connect amazon.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

$ echo -n | openssl s_client -connect microsoft.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

$ echo -n | openssl s_client -connect apple.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

Lectura adicional:

respondido por el StackzOfZtuff 10.02.2016 - 15:35
fuente
3

En realidad, hay una parte opcional de SSL / TLS que a menudo no se usa (al menos en la web) que permite la autenticación del cliente. Por lo general, no se usa en la web porque al servidor no le importa si el cliente es quien dice ser, solo necesita tener las credenciales adecuadas. Además, imagine la pesadilla de tener que verificar a cada cliente del mundo con cierta computadora, IP, dominio, etc. Ni siquiera sé cómo podría funcionar. Sería una especie de tarjeta de identificación / certificado de Internet global. ¡Una idea bastante aterradora si me preguntas!

Wikipedia tiene un tutorial decente aquí, que explica cómo funciona la autenticación de la clínica: enlace

Puede compararlo con el protocolo de enlace básico por la manera más común en que vemos que el protocolo SSL / TLS disminuye. .

Entonces, la respuesta a su pregunta es definitivamente "sí" con el entendimiento de que uno de sus servidores todavía actúa como "cliente" en este escenario. Sin embargo, la última parte es solo semántica.

    
respondido por el Gray 30.03.2015 - 19:21
fuente
0

Se puede usar un certificado x509 dado o no para el lado del cliente de una conexión SSL autorizada por el Cliente, depende de las opciones de Uso de la Clave y Uso de la Clave Extendida colocadas en el certificado por la CA emisora.

Puedes examinar un certificado x509 usando openssl x509 -in certfile.pem -text

Las opciones de uso de clave se refieren a varias operaciones para las que se puede usar el certificado, como: firma digital, acuerdo de clave, cifrado, etc.

Las opciones de Uso de clave extendida usualmente se refieren a operaciones de más alto nivel, tales como: Autenticación del servidor (lo que usaría para un servidor SSL), Autenticación del cliente (lo que usaría para un cliente SSL), Firma de código y un host de los demás.

Si tiene un certificado x509 que tiene la Autenticación del servidor & En las opciones de Uso de clave extendida de autenticación de cliente, puede estar bastante seguro de que funcionará en ambos roles. Si solo tiene opciones de Uso de claves, es posible que tenga que experimentar.

Puede encontrar una lista más completa de opciones en las secciones 4.2.1.3 & 4.2.1.12 de rfc 5280

    
respondido por el Leland Wallace 10.02.2016 - 10:49
fuente

Lea otras preguntas en las etiquetas