Estoy tratando de configurar algún tipo de conexión segura de cliente a servidor web que se realiza completamente en redes de área local, pero tengo problemas para entender cuál es la mejor práctica recomendada.
Aquí está mi situación: tengo muchos servidores web que se ejecutan en su propia LAN, y los clientes accederán al servidor web desde esa misma LAN. Quiero asegurar todas las conexiones cliente-servidor (a través de HTTPS o cualquier otra cosa) en cada LAN que tenga mi servidor web funcionando. El servidor web no necesita ser accesible desde la Internet pública. Habrá una API de backend ejecutándose en las mismas máquinas que deben ser accesibles desde Internet pública, pero no necesariamente tengo que usar HTTPS para asegurar esto (sin embargo, sería bueno si puedo resolver ambos problemas con la misma solución). No puedo distribuir certificados de confianza a los clientes, pero puedo controlar DNS y DHCP en las LAN (aunque quiero evitar esto tanto como sea posible). También tengo un nombre de dominio para el que puedo obtener un certificado de confianza.
He identificado varias opciones, pero no estoy seguro de cuáles son posibles, y estoy seguro de que debe haber una mejor práctica recomendada para este tipo de configuración. Necesito que alguien me diga cuál es la mejor práctica y por qué.
Opción 1: cada servidor web obtiene el mismo certificado para el mismo nombre de dominio, y los servidores DNS de cada LAN resuelven el nombre de dominio a la dirección local apropiada.
Opción 2: Cada servidor web obtiene un certificado diferente para un nombre de dominio ligeramente diferente (aaa.yyy.com, bbb.yyy.com, ccc.yyy.com, etc.), pero todos se manejan bajo el mismo certificado comodín. Los servidores DNS en cada LAN resuelven el nombre de dominio a la dirección local apropiada como en la Opción 1. No estoy seguro si esto funciona de manera diferente a la Opción 1.
Opción 3: cada servidor web obtiene un certificado diferente para un nombre de dominio completamente diferente (www.aaa.com, www.bbb.com, www.ccc.com, etc.). Este nombre de dominio será especificado por el usuario y el servidor web podrá solicitar un certificado a la CA sobre la marcha. No estoy seguro si esto funciona de manera diferente a las opciones 1 o 2.
Opción 4: creo una CA en cada LAN y distribuyo el certificado raíz de la CA a cada cliente. Esta no es realmente una opción en mi configuración, pero aún me gustaría saber si es la mejor práctica recomendada.
Opción 5: Cada servidor web autofirma su propio certificado y las advertencias del navegador se producen en los clientes. Tampoco es realmente una opción en mi configuración.
Opción 6: usar algún otro tipo de cifrado sobre HTTP. Esto evita la molestia de la configuración del DNS, pero no evita que los ataques del hombre en el medio. ¿Se usa esto de forma estándar para las conexiones para ofuscar contraseñas de texto plano y otras cosas antes de que HTTPS sea habilitado por un usuario en la GUI del servidor web?