Cosa succede quando scade un certificato di firma del codice?

Sto pensando di acquistare un certificato di firma del codice di VeriSign o Thawte per firmare un XBAP con. La mia domanda è questa: cosa succede quando il certificato scade? $ 299 e $ 599 sono prezzi piuttosto alti per i certificati di 1 anno / 2 anni, e se devo consegnare una build appena firmata ai miei clienti ogni volta che il mio certificato scade, allora mi occuperò solo della seccatura di creare il mio certificato per adesso.

Quello che non mi piace della creazione del mio certificato è la difficoltà di distribuirlo a tutti i computer client che useranno il mio XBAP. La mia applicazione sarà sempre utilizzata solo su una LAN, quindi suppongo che potrei sempre usare Windows Installer per installare il mio certificato di produzione casa (anche se non sono sicuro su come farlo – qualcuno ha qualche idea?).

Questo non sarebbe davvero un problema se stavo consegnando un’applicazione di fiducia parziale – ma la mia applicazione ha bisogno di autorizzazioni Web, dato che parlerà con i servizi WCF, quindi è in quella zona grigia tra fiducia parziale e piena fiducia, e senza un certificato, ottengo quel messaggio di Trust Not Granted, divertente quando cerco di caricare il mio XBAP.

Qualche idea?

Cosa si dovrebbe fare se si prevede di utilizzarlo in un ambiente chiuso (LAN) è quello di impostare la propria CA. Le versioni di Windows Server includono un’autorità di certificazione di facile utilizzo, ma è ancora più semplice impostare una CA minima mediante la demoCA fornita da openssl , che comprende diversi script. Puoi eseguire openssl demoCA in Cygwin su Windows o in modo nativo . Questa demoCA consiste di diversi script perl / bash che chiamano comandi openssl per generare richieste, firmare certificati / crls, ecc.

Quando si dispone della propria CA, è necessario installare il certificato radice CA in modo che non ci siano più problemi ad aggiornare i certificati utente poiché il certificato CA rimarrà invariato. In genere un certificato CA dovrebbe durare per 5-10 anni, ma è ansible configurarne il numero desiderato (ricordare che è la propria CA).

Il certificato CA verrà installato su ogni computer client. Se l’applicazione si fida della sicurezza del sistema Windows, deve essere installata sul keystore delle autorità di certificazione IExplorer. Se si utilizza un’applicazione Java, è necessario distribuire il certificato CA all’interno del keystore Java utilizzato.

Se si esegue la timestamp del codice mentre il certificato è valido, l’effetto è che i certificati scaduti sono buoni.

Dalle domande frequenti sul certificato di firma del codice di Thawte :

Per quanto tempo posso utilizzare un certificato di firma del codice per?

  • I certificati di firma del codice sono validi per 1 o 2 anni a seconda del ciclo di vita scelto al momento dell’acquisto del certificato. Nota: per Microsoft® Authenticode® (Multi-Purpose), è necessario anche timestamp il codice firmato per evitare che il codice scada quando scade il certificato.

Il codice con data e ora è valido dopo la scadenza del certificato di firma del codice?

  • Microsoft® Authenticode® (Multi-Purpose) consente di timestamp il codice firmato. Il timestamping garantisce che il codice non scada quando il certificato scade perché il browser convalida il timestamp. Il servizio di timestamping è fornito per gentile concessione di VeriSign. Se si utilizza il servizio di timestamping al momento della firma del codice, un hash del codice viene inviato al server di VeriSign per registrare un timestamp per il codice. Il software di un utente può distinguere tra il codice firmato con un certificato scaduto che non dovrebbe essere considerato attendibile e il codice che è stato firmato con un certificato valido al momento della firma del codice ma successivamente scaduto.

Fai attenzione ai certificati con il set WTD_LIFETIME_SIGNING_FLAG: significa (malgrado ciò che ti aspetti dal nome) che un programma firmato con il certificato non è valido dopo la scadenza del certificato, anche se il programma non è cambiato e il certificato era valido quando era firmato.

Ciò influisce anche sugli aggiornamenti, in quanto anche se il cliente controlla la casella per fidarsi di tutti i programmi della tua azienda, se il tuo programma di aggiornamento non è firmato con lo stesso certificato (o che il certificato cessa), il trust fallisce.

Da: http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx


Elaborazione di timestamp con semantica di firma a vita

Le applicazioni o le autorità di certificazione che non desiderano che le firme con data e ora siano verificate con successo per un periodo di tempo indefinito hanno due opzioni:

• Imposta l’OID del firmatario a vita nel certificato di firma del publisher.

Se il certificato di firma del publisher contiene l’OID del firmatario a vita oltre all’ID di firma del codice PKIX, la firma diventa non valida quando il certificato di firma del publisher scade, anche se la firma è timestampata. L’OID del firmatario a vita è definito come segue:

szOID_KP_LIFETIME_SIGNING 1.3.6.1.4.1.311.10.3.13

• Impostare WTD_LIFETIME_SIGNING_FLAG nella struttura WINTRUST_DATA quando si chiama WinVerifyTrust.

Se un chiamante WinVerifyTrust imposta WTD_LIFETIME_SIGNING_FLAG nella struttura WINTRUST_DATA e il certificato di firma del publisher è scaduto, WinVerifyTrust segnala la firma come non valida anche se la firma è timestampata.

Se un editore revoca un certificato di firma del codice che contiene l’OID del firmatario per durata o un chiamante WinVerifyTrust imposta WTD_LIFETIME_SIGNING_FLAG nella struttura WINTRUST_DATA, WinVerifyTrust segnala la firma come valida se sono soddisfatte entrambe le seguenti condizioni:

• La firma è stata timestamped prima della data di revoca.

• Il certificato di firma è ancora entro il suo periodo di validità. Al termine del periodo di validità, la firma non è più valida.


Per esempio: https://forum.startcom.org/viewtopic.php?f=15&t=2215&p=6827&hilit=lifetime+signing#p6827

Questo è un problema serio con i certificati StartSSL. Non mi sorprende che ci siano delle limitazioni in un certificato che costano così poco, ma seppellire questa limitazione nella stampa fine o in un vecchio post del forum invece di renderlo chiaro nella descrizione del prodotto è uno scarso business. Potrebbero risolverlo in futuro, e altri potrebbero avere o meno la stessa limitazione, quindi un’e-mail da controllare prima di spendere potrebbe essere saggia.

Indovina chi non sapeva chiedere? LOL … vabbè, vivi e impara.

Se si assicura di aggiungere un timestamp quando si firmano i binari, non sarà necessario firmarli di nuovo quando scade il certificato. Basta aggiungere “/ t http://timestamp.verisign.com/scripts/timstamp.dll ” alla riga di comando di signtool e la firma digitale verrà sempre contrassegnata come valida a meno che il certificato non venga revocato e la CA sia attendibile.

Il motivo per cui i certificati di firma del codice sono così costosi è che qualcuno deve verificare che tu sia chi dici di essere. Nel mio caso hanno verificato l’indirizzo e il numero di telefono e mi hanno telefonato. I certificati di Comodo sembrano essere leggermente meno costosi.

I certificati di firma codice non sono “gestiti”, ovvero non si aggiornano da soli … è probabile che tu debba acquistarne uno nuovo una volta scaduto.

È ansible impostare un’autorità di certificazione (CA): attenersi a una CA basata su Windows se si è un negozio di Windows, altrimenti si consiglia Linux con qualcosa come DogTag Certificate System .

Si noti che se si crea la propria CA, sarà necessario esportare il certificato CA pubblico e installarlo (quindi è considerato attendibile come CA radice) su qualsiasi server che eseguirà codice / script firmato da un certificato di firma codice emesso da tale CIRCA. Questo è molto, molto più economico (gratis?) Rispetto al pagamento di un certificato ogni X anni – per non parlare degli altri certificati che potresti rilasciare per vari motivi / usi!

È necessario evitare di timestamping del processo di firma o di timestamp mentre è all’interno della validità del certificato. Strumenti come Sign PE e altri ti permettono di controllare questi parametri