HTTPS para comunicación bidireccional

0

Estoy creando un sistema que permitirá al usuario controlar una cierta cantidad de dispositivos de hardware remotos. Cada dispositivo (el cliente) está conectado a un micro servidor web, que responde a las solicitudes HTTP (S).

El cliente debe enviar datos al servidor (que contiene su estado actual de hardware). El servidor debe enviar datos al cliente (para decirle al cliente qué hacer). El cliente y el servidor pueden enviar datos a la contraparte cuando lo deseen.

Ahora, me preocupa la seguridad ... ¿Qué hay de usar HTTPS con un certificado SSL autofirmado para el cliente?

Supongamos que compro un certificado para mi servidor de dominio (proporcionado por una CA externa de confianza) y creo un certificado autofirmado diferente para cada cliente. ¿Puedo beneficiarme de la seguridad HTTPS en las dos direcciones de comunicación (cliente a servidor y servidor a cliente)?

En este caso, el servidor almacenará los diferentes certificados de cliente, por lo que puede establecer una conexión segura cuando desee enviar un comando al cliente. ¿Está bien?

Editar 1

El "cliente" (el dispositivo de hardware) actúa como un servidor cuando recibe un comando del usuario remoto. Pero actúa como un cliente cuando envía su estado de hardware al servidor. Estos casos tienen lugar en dos momentos diferentes. Por lo tanto, ambas partes deben poder conectarse con la contraparte como cliente o servidor, según el caso.

    
pregunta Riccardo Leschiutta 04.01.2017 - 10:21
fuente

1 respuesta

1

En este caso, probablemente sería mejor que vaya para certificados autofirmados para los clientes, idealmente utilizando una CA interna de la que su servidor esté al tanto. Esta situación no tiene el inconveniente habitual de los certificados autofirmados que dan una advertencia del navegador, ya que solo se espera que el servidor se conecte a los clientes.

Sin embargo, no querrá confiar solo en el proceso básico de autenticación HTTPS. Si bien eso proporcionaría cifrado en ambas direcciones, no le permitiría verificar que su servidor esté conectado, podría ser cualquier otro dispositivo. En su lugar, puede usar la autenticación de certificado de HTTP (consulte y autenticación de contraseña para una descripción) y haga saber a sus clientes qué certificado debe presentar el servidor. Esto es algo más complicado de configurar que el cifrado normal, ya que ambos extremos deben ser conscientes del otro. Sin embargo, la ventaja es que puede estar seguro de que solo su servidor (o un atacante que haya comprometido su servidor y copiado el archivo de clave privada) pueda conectarse a los dispositivos cliente.

Dependiendo de su configuración, es posible que este proceso no sea necesario en ambas direcciones: puede considerar que otros dispositivos se pueden conectar al servidor, por lo que las conexiones de los dispositivos cliente solo se cifran sin necesidad de verificar el certificado del servidor, mientras que las conexiones El servidor debe verificarlo desde el servidor, ya que es el único dispositivo de conexión previsto. Esto también simplificaría la adición de nuevos clientes: necesitan saber qué certificado esperar del servidor, pero no es necesario actualizar el servidor para saber qué certificado tienen. Sin embargo, esta sería una decisión basada en la situación específica.

    
respondido por el Matthew 04.01.2017 - 12:11
fuente

Lea otras preguntas en las etiquetas