2009-05-26 9 views
10

Stavo leggendo What happens when a code signing certificate expires - Stack Overflow e mi chiedevo una risposta più solida. La risposta fornita era più sulla configurazione della propria CA. Anche con la tua CA, dovrai comunque gestire i certificati di codice in scadenza.Come posso evitare di dover ripetere il mio codice ogni 1 o 2 anni?

Se il codice è stato firmato senza utilizzare un servizio di timestamp, dopo la scadenza del certificato il codice non sarà più affidabile e, a seconda delle impostazioni di sicurezza, potrebbe non essere possibile eseguirlo. Dovrai ri-firmare tutto il tuo codice con un nuovo certificato, o con un certificato rinnovato, ogni 1 o 2 anni.

Il timestamp affidabile (digitale) consente alla firma digitale di essere valida anche dopo la scadenza del certificato stesso. Dovresti re-firmare il codice con il nuovo certificato solo se hai apportato delle modifiche.

Tutto ciò sembra corretto? In tal caso, ho bisogno di raccomandazioni su quale servizio di timestamp utilizzare, preferibilmente da qualcuno che ne ha effettivamente usato uno. Mi piacerebbe anche sapere se ci sono soluzioni in-house, simili ad essere la tua CA.

In questo momento si applica agli script di PowerShell, ma alla fine avrò lo stesso problema con un altro codice.

Aggiornamento: Esempio di come firmare uno script PS con un timestamp (si può fare uno script per questo):

Set-AuthenticodeSignature -filepath "D:\Projects\A Sample\MyFile.ps1" 
    -cert gci cert:\CurrentUser\My -codesigning 
    | where -Filter {$_.FriendlyName -eq "Thawte Code Signing"} 
    -IncludeChain All 
    -TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll" 

Poi, per vedere il certificato e TimeStamper Certificato Signer, si può fare questo:

Get-AuthenticodeSignature MyFile.ps1 | fl * 

ti dà il soggetto (CN, OU, ecc), Emittente, Prima/Dopo Date e impronte digitali sia per il cert e cert del TimeStamper. Riceverai anche un messaggio che indica lo stato della firma.

risposta

9

È meglio scegliere uno dei fornitori di certificati attendibili (Verisign, Thawte, Comodo, ecc.). Ciò consente di firmare il software senza che l'utente si fidi esplicitamente della propria CA radice privata. Abbiamo utilizzato sia Verisign che Thawte, Comodo anche GoDaddy con il timestamping senza problemi con il software che diventa invalido anche anni dopo la scadenza del certificato.

+3

+1: idea generale: utilizzare un provider attendibile a livello globale. –

+0

Con Verisign e Thawte hai anche il timestamp? Senza il timestamping, alcuni sistemi non si lamentano del fatto che il certificato sia scaduto e non eseguono il codice? – Bratch

+0

@Bratch: Sì, è necessario utilizzare il proprio server timestamp. Non abbiamo mai pubblicato senza di esso quindi non posso commentare applicazioni non datate. –

8

Time stamping è un servizio gratuito: è in realtà solo un provider affidabile che verifica di aver firmato il file in un dato momento. Il servizio Timestamp di Verisign è quello standard. L'ultimo esempio nella guida per Set-AuthenticodeSignature mostra come usarlo.

Lee Holmes [MSFT] Windows PowerShell Development Microsoft Corporation

+0

Sì, eccolo nell'Esempio 3, il parametro -TimeStampServer. Ora tutto quello che devo fare è selezionarne uno e scoprire se posso usarlo con una CA interna. Potrei aver bisogno di fare ciò che Paul Alexander ha suggerito sopra e ottenere uno esterno. Almeno in questo modo so che il servizio di timestamp funzionerà con il mio certificato. – Bratch

-1

non si può davvero sfuggire dover dare le dimissioni il codice alla fine. Il vantaggio di gestire la propria CA è che si può scegliere di emettere i certificati di firma del codice con una durata maggiore rispetto a quella predefinita, consentendo in questo modo di attendere più a lungo prima di dover rinunciare a qualsiasi cosa. Il lato negativo è ovviamente avere un altro servizio o server (la tua CA) da gestire.

Problemi correlati