Applicazione per la firma del codice da località diverse

4

Nella nostra azienda, uno dei gruppi di software utilizza un certificato di un provider attendibile per firmare manualmente i propri driver sul proprio computer locale. Il mio gruppo vuole iniziare a firmare i nostri programmi di installazione e alcuni strumenti di amministrazione e vorremmo utilizzare lo stesso certificato.

Il problema è che ogni gruppo sta utilizzando la propria macchina di compilazione in cui dovrà essere eseguita la firma.

Non sono un esperto di certificazione e non sono sicuro di quale sia l'approccio migliore e se è possibile farlo:

1) Installa il certificato su ogni macchina di generazione. Immagino che non sia raccomandato perché il tuo certificato potrebbe essere compromesso più facilmente dal momento che si trova in più di un posto. 2) Installa il certificato su un server e ogni macchina di generazione lo chiama per firmare i propri binari.

o qualcos'altro?

Nota: la nostra infrastruttura è su Windows.

    
posta Francis B. 09.07.2013 - 17:07
fonte

2 risposte

5

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.

    
risposta data 09.07.2013 - 19:58
fonte
3

È più facile mettere il certificato di firma sul computer dello sviluppatore, è significativamente più sicuro NON farlo.

Idealmente la chiave di firma dovrebbe essere crittografata in modo tale che una password debba essere digitata manualmente da qualcuno che ispezioni effettivamente ciò che sta firmando per verificare che sia legittimo. E qualsiasi macchina che abbia accesso alla chiave dovrebbe NON avere accesso diretto o indiretto a Internet. Nessuna rete.

Si può imparare molto leggendo sul codice gli errori di firma degli altri.

risposta data 09.07.2013 - 19:46
fonte

Leggi altre domande sui tag