Ho due server interni che stanno per comunicare tra loro; parlano HTTPS. Esiste una best practice per l'autenticazione delle comunicazioni tra server interni?
A parte una buona pratica, la mia idea attuale è di avere sia il server che il "client" (in realtà un altro server, ma un client nel senso HTTP) verificano che l'altra estremità presenti un certificato firmato da un pozzo noto CA. Sto pensando di utilizzare un certificato autofirmato come CA e di distribuire questo certificato alle macchine come parte della nostra distribuzione automatizzata. (Abbiamo anche un certificato per example.com
e *.example.com
, ma non sono sicuro di quanto voglia distribuire la chiave privata corrispondente del cert. Inoltre, sono a conoscenza delle CA centralizzate che non riesco a creare un foo-service.example.com
cert senza dare più soldi a e in attesa su una CA esterna.) Sta bene?
Per lo più, se il client viene inavvertitamente puntato sul server sbagliato (ad esempio, un record DNS viene puntato sull'IP sbagliato), le cose si rifiutano di funzionare. (Inoltre, qualcuno che si connette in modo avventato al server non deve accettare la richiesta.)
Ho pensato di far sì che i server avessero dei segreti e li passassero su intestazioni HTTP, ma qualcuno avrebbe passato il loro segreto per primo senza aver prima autenticato l'altra parte. (Anche se crypto poteva risolvere il problema, sembrava che avrei reinventato i certificati TLS.)