La parte importante è la chiave privata a cui è collegato il certificato. Sfortunatamente, alcune documentazioni ampiamente implementate sbagliano e chiamano "certificato" ciò che realmente è l'unione del certificato stesso (che contiene la chiave pubblica ed è interamente pubblico) e la corrispondente chiave privata (che aveva meglio essere pubblici, ovviamente).
Per mantenere privata la chiave privata, è meglio non copiarla in molti posti. Quando una chiave privata "viaggia" tra computer, è normalmente un archivio PKCS # 12 ( precedentemente noto come "PFX"), che contiene il certificato e la chiave privata, ed è protetto da password. L'entropia di questa password è cruciale per la sicurezza di questo transito , ma, naturalmente, questo protegge solo la chiave mentre viene trasferita. Hai ragione: più una chiave privata viene copiata, più vulnerabile diventa il furto.
Il modo normale di fare ciò è il seguente:
-
Ogni macchina di generazione ha il proprio certificato sviluppo . I certificati di sviluppo sono certificati che tu stesso generi, con una CA personalizzata (che può essere un uso approssimativo dello OpenSSL strumento da riga di comando). Le macchine di prova, su cui viene eseguito lo sviluppo, sono configurate per accettare questa CA personalizzata come attendibile (o forse i controlli delle firme sono disattivati del tutto).
-
Per i rilasci di produzione , i binari che devono essere firmati vengono trasportati su una macchina specifica protetta che contiene la vera chiave di firma (quella corrispondente al certificato che hai acquistato dal "fornitore di fiducia"). I rilasci non si verificano spesso, quindi questa procedura manuale dovrebbe essere accettabile.
Avere un sistema di firma gratuito per tutti, accessibile e regolarmente accessibile dagli sviluppatori, mi sembra un po 'pericoloso. Una firma con una chiave di fiducia di terzi è una responsabilità : ti rende responsabile. Dovresti cercare di firmare le cose con quella chiave il più raramente possibile, cioè solo per le versioni.