Nel contesto di ssl / tls, un lavoro principale delle CA è assicurare al client che il server al quale è connesso il client è il server a cui il client intendeva connettersi. In alcuni casi può anche essere usato per verificare altre cose.
Comprendere questo e capire i tuoi clienti è la chiave per capire quando dovresti creare la tua CA. Devi pormi alcune domande.
- I tuoi clienti utilizzeranno software generico o useranno il software che fornisci?
- Se si tratta di un software generico, si prevede di utilizzare un elenco predefinito di CA di sistema o prevede la configurazione di una CA esplicita?
- I tuoi clienti saranno sulle macchine che gestisci?
Una volta fatto ciò, puoi valutare i pro e i contro dell'uso del sistema CA pubblico o di una CA privata nel tuo particolare contesto.
Spesso avrai poca scelta. Ad esempio, prendi un sito Web pubblico, i tuoi clienti utilizzano software generico, su macchine che non controlli e su cui non sono disposti a eseguire configurazioni speciali per il tuo sito. Fondamentalmente non hai altra scelta che usare una CA pubblica ampiamente riconosciuta.
All'altro estremo prendi qualcosa come openvpn. Si aspetta completamente che tu usi la tua CA privata come mezzo di identificazione e controllo degli accessi. Provare ad usarlo con una CA pubblica non funzionerebbe ragionevolmente.
Una via di mezzo potrebbe essere un sito Web solo per uso interno. L'utilizzo della propria CA qui comporterebbe dei vantaggi, si potrebbero emettere certificati per i nomi di host interni e non si dovrebbe dipendere da parti esterne per emettere certificati. Tuttavia porterebbe anche degli svantaggi, dovresti installare la tua root nei principali negozi root affidabili sui client. Ottenere il certificato di root negli archivi root attendibili sui client può essere un problema se si hanno macchine non gestite in giro. Avere il tuo cert negli archivi root attendibili significherebbe anche che potrebbe essere usato per gli attacchi MITM sui tuoi client, quindi dovrai mantenere i certificati root (e intermedio se applicabile) sotto controllo molto stretto.
O spostandoti sul lato dello sviluppo del software, considera un programma con un sistema di aggiornamento automatico che si basa su tls per la sicurezza (non un design che consiglierei). Se si utilizza una CA pubblica sul server e l'elenco CA predefinito dei sistemi operativi sul client, chiunque riesca a convincere una CA pubblica a fornire loro un certificato per il proprio dominio può MITM gli aggiornamenti. D'altra parte con una CA privata, l'utente malintenzionato dovrebbe compromettere l'infrastruttura di certificazione interna.