it-swarm-es.com

¿Cuál es la diferencia entre un "certificado de cliente" X.509 y un certificado SSL normal?

Estoy configurando un servicio web a través del cual mi empresa hablará con varios servicios de clientes comerciales. Estaremos intercambiando información usando SOAP. Me gustaría manejar la autenticación con certificados SSL proporcionados por ambas partes, pero estoy un poco perdido sobre si hay una diferencia fundamental entre los tipos de certificados.

Cuando las personas hablan de HTTPS, hablan de obtener un certificado SSL de Verisign u otra autoridad. Cuando hablan de la autenticación del lado del cliente, hablan de obtener un certificado X.509. ¿Son estas dos palabras para la misma cosa, se puede convertir una en la otra, o hay alguna otra diferencia que no entiendo?

97

Un certificado X509 es un tipo de clave pública en un par de claves pública/privada. Estos pares de claves se pueden usar para diferentes cosas, como el cifrado a través de SSL o para la identificación. Los certificados SSL son un tipo de certificado X509. SSL funciona cifrando el tráfico y verificando a la parte (Verisign confía en que este sitio web sea quien dice ser, por lo que probablemente usted también podría hacerlo). Verisign actúa como una Autoridad de certificación (CA). Se confía en la CA en que todo lo que dice debe tomarse como verdad (la ejecución de una CA requiere importantes consideraciones de seguridad). Por lo tanto, si una CA le da un certificado que dice que confía en que realmente es usted, tiene un certificado de usuario/certificado de cliente.

Algunos de estos tipos de certificados se pueden usar en todos los ámbitos, pero otros solo se pueden usar para ciertas actividades.

Si abre un certificado en Windows (busque algo sobre SSL en IE y mire las propiedades del certificado) o ejecute certmgr.msc y vea un certificado, mire la pestaña Detalles> Uso de claves. Eso determinará para qué se permite/se usa el certificado.

Para SOAP, el certificado se puede usar para dos cosas: identificación y encriptación. Bueno, tres si incluye firmas de mensajes (hashing de mensajes).

Los certificados de cliente identifican al cliente o usuario llamante. Cuando la aplicación realiza una solicitud SOAP), entrega el certificado al servicio web para indicar quién realiza la solicitud.

65
Steve

En TLS, se requiere que el servidor tenga una clave privada y un certificado (a veces conocido como un certificado de servidor). El certificado del servidor identifica y autentica el servidor. El cliente también puede tener opcionalmente su propia clave privada y certificado (generalmente llamado certificado de cliente). Si se utiliza un certificado de cliente, identifica y autentica al cliente.

En la web, con HTTPS, generalmente el servidor tiene un certificado de servidor pero no se usan certificados de cliente. Esto significa que el cliente puede autenticar con qué servidor está hablando, pero el servidor no puede autenticar con qué cliente se está conectando.

Sin embargo, en muchos contextos programáticos, normalmente querrá que ambos puntos finales se autentiquen entre sí. Por lo tanto, deseará utilizar certificados de servidor y certificados de cliente.

En TLS, todos los certificados son certificados X.509. X.509 es solo el formato de los datos.

Los certificados incluyen una clave pública y una firma de una autoridad de certificación (CA). En la web, generalmente los sitios web tienen un certificado de servidor emitido (firmado) por Verisign o alguna otra CA conocida. Los navegadores web vienen con una lista de casi 100 CA diferentes, preinstaladas y los sitios web más utilizados tienen un certificado de servidor emitido por una de esas CA. Por ejemplo, Verisign es una de las CA en la lista estándar de CA de cada navegador. Verisign le cobra dinero si desea que le emitan un certificado.

La alternativa a obtener su certificado firmado por una CA estándar es que puede usar un certificado autofirmado: un certificado emitido, no por una de las CA estándar, sino por usted mismo (o cualquier persona que desee). Esto no se usa mucho en la web, porque los certificados de servidor autofirmados hacen que los navegadores muestren cuadros de diálogo de advertencia al usuario, que la mayoría de los sitios web intentan evitar. Sin embargo, para usos programáticos, los certificados autofirmados pueden funcionar bien. Y si utiliza certificados autofirmados, no tiene que pagar el dinero de Verisign. Puede encontrar tutoriales sobre cómo usar las herramientas de línea de comandos de OpenSSL para crear sus propios certificados autofirmados.

SSL es sinónimo de TLS. (Técnicamente, SSL es el nombre que se utilizó con varias versiones anteriores del estándar, y TLS es un nombre nuevo para varias versiones más recientes de los estándares. Sin embargo, muchas personas usan los dos términos indistintamente).

Te animo a leer el artículo de Wikipedia sobre el certificado de clave pública para obtener más información útil.

36
D.W.

Los certificados SSL "normales" suelen ser son certificados X.509.
Sin embargo, estos solo pueden usarse para la autenticación y el cifrado del servidor: uno de los atributos de los certificados es su propósito designado, y generalmente no puede usarlo para un propósito diferente.
Aparte de eso, sin embargo, un certificado de cliente es prácticamente idéntico a un certificado de servidor, simplemente designado como "Autenticación de cliente".

Funcionalmente, a menudo encontrará que algunos sistemas eligen aceptar solo un subconjunto de certificados de clientes, p. los emitidos por su propia CA.

15
AviD

Funcionalmente, son lo mismo: una clave RSA pública e información de identificación firmada por una autoridad. Prácticamente, las claves de su servidor generalmente se configuran con un nombre común que identifica el dominio en cuestión (* .wikimedia.org, por ejemplo). No creo que haya nada que le restrinja el uso de un certificado, incluidos los autogenerados, siempre que coincida con los requisitos de autenticación de la otra parte.

4
Jeff Ferland