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

91

Estoy configurando un servicio web a través del cual mi empresa hablará con varios servicios de clientes empresariales. Estaremos intercambiando información utilizando SOAP. Me gustaría manejar la autenticación con certificados SSL proporcionados por ambas partes, pero estoy un poco perdido en cuanto a 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 autenticación del lado del cliente, hablan de obtener un certificado X.509. ¿Son estas dos palabras para la misma cosa, una puede convertirse en la otra, o hay alguna otra diferencia que no entiendo?

    
pregunta Brandon Yarbrough 03.01.2011 - 19:38
fuente

4 respuestas

59

Un certificado X509 es un tipo de clave pública en un par de claves pública / privada. Estos pares de claves se pueden utilizar 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 mediante el cifrado del tráfico y la verificación de la parte (Verisign confía en que este sitio web sea quien dicen ser, por lo que es probable que usted también lo haga). 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 otorga 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 de forma generalizada, 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, consulte la pestaña Detalles > Uso clave Eso determinará para qué se puede hacer / usar el certificado.

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

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

    
respondido por el Steve 03.01.2011 - 19:52
fuente
32

En TLS, se requiere que el servidor tenga una clave privada y un certificado (a veces conocido como certificado de servidor). El certificado del servidor identifica y autentica el servidor. Opcionalmente, el cliente también puede tener su propia clave privada y certificado (generalmente denominado 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 qué cliente se está conectando a él.

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, normalmente los sitios web tienen un certificado de servidor emitido (firmado) por Verisign o alguna otra CA conocida. Los navegadores web incluyen una lista de casi 100 CA diferentes, los sitios web preinstalados y 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 que se emite, no por una de las CA estándar, sino por usted mismo (o cualquier persona que desee). Esto no se usa demasiado en la web, porque los certificados de servidores 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 usa certificados autofirmados, no tiene que pagar dinero de Verisign. Puede encontrar tutoriales sobre cómo utilizar las herramientas de línea de comandos de OpenSSL para crear sus propios certificados autofirmados.

SSL es un sinónimo de TLS. (Técnicamente, SSL es el nombre que se usó 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.)

Le recomiendo que lea el artículo de Wikipedia sobre el certificado de clave pública para obtener información más útil.

    
respondido por el D.W. 07.01.2011 - 06:32
fuente
13

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

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

    
respondido por el AviD 03.01.2011 - 23:07
fuente
3

Funcionalmente, son lo mismo: una clave RSA pública e información de identificación firmada por una autoridad. En la práctica, 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 impida utilizar un certificado, incluido el autogenerado, siempre que coincida con los requisitos de autenticación de la otra parte.

    
respondido por el Jeff Ferland 03.01.2011 - 19:46
fuente

Lea otras preguntas en las etiquetas