2012-06-27 13 views

risposta

5

È possibile sviluppare il proprio servizio marcatura temporale. È possibile scrivere server TSP (RFC 3161) ma Authenticode non utilizza i formati RFC 3161 ma PKCS # 7/PKCS # 9 come descritto in MSDN article (che è possibile implementare anche). I nostri componenti SecureBlackbox includono componenti server di registrazione cronologica che supportano entrambi i formati. Aggiornamento: gli aggiornamenti recenti su Authenticode utilizzano timestamp RFC 3161 standard.

Ma il problema è ottenere il certificato che verrà utilizzato per firmare data e ora. Questo certificato deve essere rilasciato da una delle CA e, a quanto ho capito, esistono requisiti severi in materia di gestione e aspetti dell'infrastruttura per l'esecuzione di un server timestamp. In particolare è necessario disporre di un hardware di timestamp sicuro. Non ho approfondito questa domanda, ma questi aspetti sono molto più complicati della scrittura di un pezzo di codice.

Tuttavia, se si esegue la propria infrastruttura PKI (con certificati radice e certificati CA attendibili), il problema di disporre di un certificato Timestamping attendibile viene risolto automaticamente: è possibile generare il proprio certificato.

5

È necessario scrivere un server Timestamp HTTP personalizzato. Dovrebbe seguire le regole RFC 3161 Time-Stamp Protocol (TSP).

Quando si firma la DLL per autenticode con uno strumento come Signtool.exe da Windows SDK, è possibile specificare l'URL del server di timestamp (con/t swich. Vedere anche/tr e/td). Dovresti quindi puntare al tuo server.

vedi qui su SO per una questione connessa: Trusted Timestamps - understanding the format (rfc3161)

e anche: Alternative timestamping services for Authenticode

+0

Fonte eccellente – Alexandru

+2

Authenticode non usa RFC 3161. Usa i formati PKCS # 7/PKCS # 9. –

1

Supponendo di volere questo per test, se si è felici di utilizzare signtool.exe con l'opzione/tr, non è necessario esaminare la RFC, perché openssl implementa abbastanza di questo per voi. È sufficiente scrivere un gestore HTTP POST nella propria lingua preferita, passare i dati inviati in "openssl ts -reply" verbatim, rispedire i dati di risposta TS di openssl. Questo è abbastanza buono da ingannare "signtool.exe verify/pa", anche se non segue strettamente la RFC.

MODIFICA: Sembra che il progetto Java Signserver open source fornisca un server che gestisce MSArhenticode (/ t) e rfc3161 (/ tr) timestamping out of the box. La configurazione di Signserver implicava troppe dipendenze per me, quindi ho invece hackerato il test dell'unità per timestamp MSAuthenticode, imbucato su un piccolo server HTTP per il test case e con poco lavoro - le mie abilità Java sono mediocri al meglio - avere un timestamp in esecuzione in tempo reale server per l'utilizzo dello sviluppo e hanno verificato che i timestamp così creati non sono soggetti allo this issue. Non riesco a rilasciare il codice sorgente, tuttavia seguire questo suggerimento dovrebbe farti funzionare abbastanza velocemente.

1

È possibile impostare la propria Time-Stamping Authority (TSA) che supporta i timestamp Authenticode (e/o RFC# 3161) utilizzando SignServer.

Vedere https://www.signserver.org per il download e le istruzioni di installazione.In sintesi i passi importanti sono:

  1. Assicurarsi di avere i pre-requisiti:

    • Java
    • Un server applicazioni (cioè wildfly)
    • Apache Ant per la distribuzione
  2. Scarica l'ultima versione da https://signserver.org o https://sourceforge.net/projects/signserver/files/signserver/ .

  3. application server Configurare

    • per HTTPS (opzionale)
    • per rendere i servizi web funzionano
    • Patch con le ultime correzioni di sicurezza della distribuzione
  4. Configura SignServer

    • Set DATABASE.NAME = NODB e database.nodb.location =/an/vuoto/cartella/come/db in conf/signserver_deploy.properties
  5. Deploy SignServer

    • export APPSRV_HOME =/opt/wildfly-9/
    • bin/ant distribuire server di applicazione
    • Inizio /opt/wildfly-9/bin/standalone.sh
  6. Verificare che server è stato avviato

    • bin/signserver getstatus breve tutto
  7. Setup un cripto gettone

    • bin/signserver setProperties doc/campione-configs/keystore-crypto-configurazione. immobili
    • bin/signserver ricarica 1
    • bin/signserver getstatus breve tutto
  8. Setup un firmatario campione di time-stamp

    • bin/signserver setProperties doc/campione-configs/qs_timestamp_configuration.proprietà
    • bin/signserver ricaricare 2
    • bin/signserver getstatus breve tutto
  9. prova il firmatario timestamp

+0

È probabile che la parte "scarica la versione più recente" invalidi molte delle altre istruzioni qui più rapidamente del semplice link-rot. È un po 'ingenuo aspettarsi che il poster torni qui e aggiorni le istruzioni per ogni nuova release, quindi ritengo che un semplice collegamento sarebbe stato più appropriato. – Keeely