Se vuoi mantenere basso il budget, ti consiglio di consultare EJBCA che è open-source e gratuito da usare, anche se molte delle fantastiche funzionalità aziendali sono nella loro versione a pagamento. Fanno le seguenti affermazioni sul throughput:
Since EJBCA uses standard relational databases, suitable for large scale and high performance you can easily scale EJBCA to hundreds of millions issued certificates, and with some care even billions. Depending on the architecture and interfaces chosen you can reach very low latency (sub 100ms) and very high throughput (>100 certs/sec). [source]
Sebbene i test indipendenti abbiano rilevato che questo si riduce abbastanza rapidamente quando si ottiene oltre 1 milione di certificati emessi.
Affrontare la seconda parte della tua domanda:
Is there any benefit to using a "real" CA to issue my server cert and generate my client certs for me?
Dipende davvero da cosa stai usando i certificati. So che molti processi di produzione di Internet of Things (IoT) utilizzano certificati client per consentire ai dispositivi di autenticarsi nella rete aziendale durante la produzione per fare cose come la configurazione iniziale, il download del firmware e altre cose che si desidera fare in modo sicuro . Alla fine della produzione, questi certificati vengono distrutti / mai usati di nuovo. Nel caso sia perfettamente ok usare una CA interna privata che è nascosta dall'esterno di Internet.
Se, d'altra parte, i certificati che emetti durante fab resteranno sul dispositivo in produzione e devono essere pubblicamente verificabili, quindi questa è una storia diversa. [Ad esempio, se crei lampadine e hai bisogno che gli iPhone degli utenti siano in grado di verificare che stiano parlando con una lampadina IPBulb, Inc autentica, o le lampadine devono essere in grado di autenticarsi su un server IPBulb, Inc per recuperare periodicamente gli aggiornamenti.] In questo caso sarà necessario disporre di una CA pubblica che esegua tutto lo stato di aggiornamento e aggiornamento delle chiavi. Ciò si complica rapidamente e potrebbe valere la pena collaborare con una CA commerciale solo per evitare il fastidio.
EDIT : trascina i commenti per rendere la risposta autonoma.
Il motivo per cui mi propongo di esternalizzare l'emissione del certificato è principalmente dovuto al carico del server e ai tempi di risposta quando si ha a che fare con revoche e aggiornamenti di certificati. Per la maggior parte delle piccole e medie imprese, è più economico affidare questo servizio a uno specialista piuttosto che affidarsi a ingegneri di datacenter di prim'ordine.
Revoca: La parte difficile è che il server che verifica i certificati deve essere in grado di chiedere alla CA "questo certificato è ancora valido?" e ottenere una risposta molto rapidamente (come < 25 ms). Questo è chiamato Online Certificate Status Protocol (OCSP). Man mano che la tua infrastruttura cresce, un singolo server OCSP non sarà in grado di gestire il traffico, quindi ora hai bisogno della replica del database in tempo reale, del load-ballancers e di buoni tecnici del data center per mantenere bassi i tempi di risposta. Questo va oltre lo scopo della maggior parte delle piccole-medie imprese, ed è più economico esternalizzare.
Per aggiornamento / riemissione di certificati: Non c'è alcun problema con il client che scarica il suo certificato nuovo / riemesso prima che scada quello vecchio, ma devi avere server che lo gestiscono attivamente, che dispongono di porte per la gestione dei certificati aperte a Internet (potenziale superficie di attacco / punto di attacco). Inoltre, per i certificati ~ 30k tutti in scadenza in un breve periodo di tempo l'uno dall'altro, il carico del server sarà enorme. Ancora una volta, quanto sono validi gli ingegneri del data center della tua azienda?