Sto provando a impostare una sorta di client sicuro per la connessione al server web che si svolge interamente su reti locali, ma ho difficoltà a capire quale sia la migliore pratica consigliata.
Ecco la mia situazione: ho molti server Web che sono ciascuno in esecuzione sulla propria LAN ei client accederanno al server Web all'interno della stessa LAN. Voglio proteggere tutte le connessioni client-server (tramite HTTPS o qualsiasi altra cosa) su ogni LAN su cui è in esecuzione il mio server web. Il server Web non deve essere raggiungibile da Internet pubblica. Ci sarà un'API di back-end in esecuzione sugli stessi computer che devono essere raggiungibili da Internet pubblico, ma non devo necessariamente usare HTTPS per proteggerlo (tuttavia, sarebbe bello se riuscissi a risolvere entrambi i problemi con la stessa soluzione). Non posso distribuire certificati attendibili ai client, ma posso controllare DNS e DHCP sulle LAN (anche se voglio evitarlo il più possibile). Possiedo anche un nome di dominio per il quale posso ottenere un certificato attendibile.
Ho identificato diverse opzioni, ma non sono sicuro quali siano possibili e sono certo che ci deve essere una best practice raccomandata per questo tipo di configurazione. Ho bisogno che qualcuno mi dica qual è la migliore pratica e perché.
Opzione 1: ogni server Web ottiene lo stesso certificato per lo stesso nome di dominio e i server DNS su ogni LAN risolvono il nome del dominio all'indirizzo locale appropriato.
Opzione 2: ogni web server ottiene un certificato diverso per un nome di dominio leggermente diverso (aaa.yyy.com, bbb.yyy.com, ccc.yyy.com, ecc.), ma sono tutti gestiti sotto lo stesso certificato jolly. I server DNS su ogni LAN risolvono il nome del dominio all'indirizzo locale appropriato come nell'opzione 1. Non sono sicuro che questo funzioni diversamente dall'opzione 1.
Opzione 3: ogni web server ottiene un certificato diverso per un nome di dominio completamente diverso (www.aaa.com, www.bbb.com, www.ccc.com, ecc.). Questo nome di dominio verrebbe specificato dall'utente e il server Web sarebbe in grado di andare a richiedere una CA per un certificato al volo. Non sono sicuro che funzioni diversamente dalle Opzioni 1 o 2.
Opzione 4: creo una CA su ogni LAN e distribuisco il certificato di origine CA ad ogni client. Questa non è davvero un'opzione nel mio set up, ma mi piacerebbe comunque sapere se è la best practice raccomandata.
Opzione 5: ogni server Web firma autonomamente il proprio certificato e gli avvisi del browser vengono prodotti nei client. Inoltre non è davvero un'opzione nella mia configurazione.
Opzione 6: usa un altro tipo di crittografia su HTTP. Ciò evita il fastidio della configurazione DNS, ma non impedisce gli attacchi man in the middle. Viene usato in modo standard per le connessioni per nascondere le password in chiaro e cosa non è possibile prima che HTTPS sia abilitato da un utente sulla GUI del server Web?