¿Se requieren certificados digitales válidos en los clientes (Java, C ++, etc.) para realizar conexiones https exitosas?

StackOverflow https://stackoverflow.com/questions/1001078

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy planeando implementar un pequeño programa independiente que realizará una solicitud https a un servidor. ¿Eso requiere un certificado ssl válido en el cliente? ¿Cómo funciona el protocolo de enlace SSL en ese caso? ¿Hay algún problema de seguridad en el cliente que no tenga un certificado SSL?

¿Fue útil?

Solución

Además de encriptar el tráfico de red, HTTPS se usa normalmente para autenticar el servidor. Es decir, para dar a los clientes información tranquilizadora sobre quién es el propietario del servidor, etc. Para que eso funcione, el cliente debe inspeccionar la cadena de confianza en el certificado publicado por el servidor. Para que esto suceda automáticamente, la máquina cliente debe tener instalado un certificado que describa una Autoridad de Certificación que emitió el certificado del servidor. Normalmente, dichos certificados se encuentran en su máquina en una tienda llamada "Autoridades de certificación raíz de confianza". y la mayoría de los sistemas operativos vienen con un conjunto de CA comunes ya instaladas.

Además, muchos servidores web ofrecen una función en la que el cliente puede autenticarse en el servidor al proporcionar un certificado de cliente. El servidor web puede inspeccionar el certificado proveniente del cliente y asignarlo a un conjunto de permisos en el servidor. Esta " autenticación de cliente " no es necesario para una sesión HTTPS de trabajo, sin embargo, es solo una opción.

En resumen, en realidad no necesita ningún certificado en el cliente, pero probablemente quiera tener un certificado de CA raíz para validar la identidad del servidor . Si no tiene ese certificado, le será imposible confiar en el servidor (a menos que tenga otra buena razón para hacerlo), pero puede elegir intercambiar datos con él de todos modos.

Otros consejos

Si desea obtener más información sobre el protocolo HTTPS y lo que se negocia, le recomiendo que vea este excelente artículo escrito en moserware

http://www.moserware.com /2009/06/first-few-milliseconds-of-https.html

Se requiere un certificado de cliente solo si el servidor lo requiere. Un certificado de cliente permite que el servidor autentique al cliente, pero esto solo es útil si el servidor tiene una lista de todos los clientes autorizados. En general, ese no es el caso con un servidor web, por lo que es bastante raro que requieran certificados de cliente.

Cuando está presente, el certificado del lado del cliente no afecta el establecimiento del canal seguro. (Solo se requiere el certificado del servidor para eso y agregar un certificado de cliente a la mezcla no cambia el proceso). Una vez que se establece un canal seguro, el servidor utilizará el certificado del cliente para autenticar al cliente (generalmente comparando la información pública del cliente). clave o nombre con una lista de clientes autorizados).

No necesita un certificado para establecer una conexión HTTPS, pero lo necesita si quiere saber con quién se está comunicando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top