Tengo una situación en la que deseo producir widgets (hardware físico) que se conecten a una LAN y actúen como un servidor web, entregando contenido a clientes web que también están en la LAN.
El tráfico de los widgets al cliente debe estar cifrado, pero existe el problema de que no tengo control ni de la LAN ni del cliente, lo que significa que es imposible configurar una CA local o realizar cualquier manipulación de DNS.
¿Es posible organizar alguna forma en la que el widget pueda enviar datos cifrados al cliente web?
Probablemente sea posible crear y publicar certificados para cada dispositivo si eso crea algún mecanismo que permita que esto suceda (vinculado a algún dominio que poseo, digamos widgetN.thedomainiown.com). Supongamos que todo en la LAN puede ver las grandes redes de Internet.
He considerado un par de estrategias de la siguiente manera:
- Cree un certificado para cada dispositivo como se indica arriba y envíe el widget con ese certificado instalado. Entiendo que esto no funcionará porque provocará una discrepancia en el nombre de host del certificado.
- Haga que tanto el widget como el cliente se comuniquen a través de un servidor de Internet confiable que yo controlo.
En el segundo caso, en un extremo, todos los datos pueden comunicarse a través de enlaces seguros y retransmitirse a través del servidor de confianza. Supongo que esto resolvería el problema, sin embargo, es impracticable por motivos de ancho de banda y latencia.
En cambio, ¿es posible utilizar el servidor de confianza para configurar el enlace cifrado entre el widget y el cliente? He pensado en usar el cifrado de JavaScript para esto, pero todo lo que he leído me dice que el cifrado de JavaScript es simplemente malo y nunca debería usarse. En este caso, no tengo del todo claro cuál sería el problema, por lo que estaría encantado de que me aclarasen.
Sería un caso en el que el servidor confiable construye una aplicación web que encapsula el protocolo de cifrado y los certificados necesarios que luego pueden usarse para manejar el cifrado a través de la LAN. Es decir, el servidor confiable proporciona la página web utilizada para manejar el tráfico local (¿es esto posible dada la política del mismo origen?).