C'è più di un modo per farlo, ma se fossi io a farlo, questo è il mio modo di scegliere:
Gruppo di server A
Questi server dovrebbero avere un certificato server , non uno client. Dal momento che saranno tutti accessibili utilizzando lo stesso hostname, dovrebbero utilizzare lo stesso certificato server. Questo certificato deve essere emesso da un'autorità di certificazione attendibile dai server del gruppo di servizi B, che può essere una CA generalmente attendibile, come ad esempio letsencrypt.org o Digicert, oppure può essere una CA locale che è stata configurata (nel qual caso è necessario distribuire il certificato CA radice ai server B).
Gruppo di servizi B
Questi server dovrebbero utilizzare i certificati client . Qui, userei un certificato per server, invece di averne tutti uno in condivisione. E userei un CA locale, interno solo alla mia organizzazione, per emetterli. Avrei configurato i server A per consentire l'accesso a qualsiasi client che utilizza un certificato emesso dalla mia CA interna.
Il motivo per cui non utilizzi una CA pubblica è che è molto più semplice concedere l'accesso ai tutti certificati emessi da una CA, invece di verificare se il certificato contiene per es. l'organizzazione corretta o il nome host corretto. (Ovviamente si desidera anche controllare che il certificato non sia stato revocato, quindi la CA ha bisogno di pubblicare gli elenchi di revoca dei certificati, o forse persino consentire i controlli OCSP.)
Raccomando anche l'uso di un sistema di gestione della configurazione, come puppet o ansible, per registrare automaticamente i server B sulla CA interna al momento dell'installazione e per rinnovare i certificati, se necessario. Esistono numerosi protocolli che possono essere utilizzati per questo; Consiglierei CMP o EST. (EST è più recente, è specificato in RFC 7030 e puoi testarlo su link ).
Impostazione di una CA interna
Se la CA interna viene utilizzata solo per creare questi certificati client, puoi utilizzare praticamente tutti i software CA che ti piacciono e sei sicuro di poterlo gestire.
-
OpenSSL è disponibile per tutti i sistemi operativi, ma non è molto facile da usare, anche se con alcuni script è molto versatile.
- Se dovessi configurarlo, utilizzerei EJBCA , perché è il software che conosco meglio e è abbastanza facile da usare. È open source e puoi scaricare una macchina virtuale preinstallata per provarla. (Si noti che questa macchina preinstallata non dovrebbe essere utilizzata in produzione senza un lavoro significativo svolto prima, non è stata temprata e ogni macchina virtuale ha la stessa chiave di amministrazione!)
- Se utilizzi Windows, Servizi certificati Microsoft Active Directory è probabilmente la soluzione migliore; è integrato sin dall'inizio.
- Se stai eseguendo RedHat, forse guarda RedHat Certificate System .