2009-08-25 17 views
5

Mi piacerebbe capire alcune delle migliori pratiche relative alla firma del codice. Abbiamo un'applicazione basata su Eclipse e pensiamo che sarebbe opportuno firmare i nostri plug-in. Questo ha sollevato un sacco di domande:Code Signing come parte del processo di compilazione

  • può/deve la chiave privata in controllo del codice sorgente?

  • Dovremmo firmare il codice come parte di il nostro processo di compilazione notturna o come parte della nostra procedura di rilascio?

  • Il codice deve essere firmato automaticamente oppure esiste un motivo perché dovrebbe essere un passaggio manuale?

La mia inclinazione è quella di dire: "Sì", "Nightly" e "automaticamente", ma ho potuto vedere un argomento per la firma solo i prodotti di rilascio. Potrei persino argomentare che SQA dovrebbe firmare il codice dopo averlo verificato, anche se ciò significherebbe davvero compromettere il nostro processo di rilascio.

Come gestiscono le altre persone?

risposta

7

Dipende da quanto si desidera che la propria chiave privata sia sicura, potrebbe non essere qualcosa che si desidera che un dipendente temporaneo con accesso di origine abbia pieno accesso.

Al mio lavoro, facciamo il seguente:

binari "segno" di prova come parte del nostro quotidiano costruisce con un check-in chiave. Ciò richiede che un certificato di root di test sia presente su macchine per fidarsi dei binari, ma non saranno considerati attendibili se i bit vengono distribuiti all'esterno dell'azienda.

Settimanale (e per rilasci esterni), firmiamo con la chiave reale. Questo viene fatto tramite un processo separato, in qualche modo manuale. Solo poche persone hanno accesso alla chiave per firmare il prodotto.

3

Posso dirvi come ho visto questo essere fatto in una grande corp. I singoli sviluppatori potevano creare il codice, ma non potevano firmarlo. Questa sarebbe una build privata. La macchina di integrazione di Contiguos rilasciava build notturni firmati con una chiave memorizzata nel keystore della macchina di generazione, che sarebbe una chiave di prova firmata da un'autorità di certificazione aziendale (cioè una chiave attendibile solo all'interno del corp). La build ufficiale potrebbe essere firmata solo da macchine controllate con l'autorizzazione ufficiale globale, firmata, la chiave di firma memorizzata nei moduli hardware nella stanza d'accesso controllata.

L'idea è che una chiave privata dovrebbe avere solo una copia al mondo (al massimo un extra per l'impegno). L'intero valore della chiave deriva dalla sua privacy, non da qualsiasi altra cosa. Il momento è disponibile per tutta l'org, è buono come metterlo in una baia dei pirati.

Problemi correlati