Un modo standard per aggiungere manualmente una firma digitale a un file PDF?

15

Ho creato alcuni certificati per utilizzare me stesso, ma mi trovo perplesso quando si tratta di creare un certificato che contenga una firma digitale. Innanzitutto, come andrei sulla creazione di un certificato standard che non contiene più solo campi comuni, ma anche quelli che contengono una firma digitale. E in secondo luogo, come posso aggiungere manualmente questo certificato come dati al file pdf corrispondente?

Grazie!

    
posta roman canada 30.04.2013 - 22:12
fonte

5 risposte

23

Secondo i tuoi commenti ad altre risposte, in realtà vuoi

sign a pdf file with [your] certificate, then have this signature saved and appended to the pdf [you]'ve just signed.

(A proposito, si firma con la chiave privata associata alla chiave pubblica nel certificato, non con il certificato stesso, ma questo è un dettaglio.)

Presumo che tu voglia "aggiungere" la firma al PDF in modo che un visualizzatore PDF conforme allo standard (ad es. Adobe Reader) riconosca, visualizzi e convalidi come firma PDF integrata.

In questo caso hai già iniziato a sbagliare firmando il PDF originale così com'è e aspettandoti di dover semplicemente aggiungere in qualche modo quella firma al file. Devi invece creare una nuova revisione del documento PDF che include un campo firma PDF AcroForm il cui valore è un dizionario delle firme la cui voce / Contents contiene la firma dell'intera nuova revisione con l'eccezione del < strong> / Contenuto contenuto della voce.

SepiùfirmedevonoessereintegrateinunPDF,ciòavvienetramiteaggiornamentiincrementaliPDF(esplicitamentenonaggiungendopiùstruttureSignerInfoaununicocontenitoredifirmaCMSintegrato!):

Questo è spiegato in modo abbastanza grafico e in maggiore dettaglio nel documento Adobe Firme digitali in un PDF . Inoltre è specificato nella specifica PDF ISO 32000-1: 2008 reso disponibile qui da Adobe nella sezione 12.8 Firme digitali.

Attenzione, però! La specifica dice:

A byte range digest shall be computed over a range of bytes in the file, that shall be indicated by the ByteRange entry in the signature dictionary. This range should be the entire file, including the signature dictionary but excluding the signature value itself (the Contents entry). Other ranges may be used but since they do not check for all changes to the document, their use is not recommended.

Questo sembra consentire di creare prima una firma per il PDF originale e quindi aggiungere una nuova revisione contenente quella firma che indica che l'intervallo di byte firmati contiene solo la revisione originale, non la revisione estesa senza solo la firma.

In realtà, tuttavia, i visualizzatori di PDF (in particolare Adobe Reader) accettano solo firme che seguono la raccomandazione che l'intervallo firmato dovrebbe essere l'intero file, incluso il dizionario delle firme ma escludendo il valore della firma stesso.

Le nuove specifiche, ad es. la specifica ETSI PAdES ETSI TS 102 778 (cfr. sezione 5.1 articolo b nella parte 2 e sezione 4.2 elemento c nella parte 3 ) anche rendere questa raccomandazione ufficialmente un requisito, e così sarà ISO 32000-2.

A seconda del contesto di programmazione, ci sono molte librerie PDF che supportano la creazione di firme PDF integrate e anche molti prodotti che utilizzano queste librerie. Alcuni di essi sono disponibili anche per soggetti gratuiti, ad es. alla AGPL.

    
risposta data 01.05.2013 - 01:42
fonte
1

Poiché il certificato è stato registrato e i campi sono stati completati con i tuoi dettagli, il certificato è la tua firma digitale. Non aggiungi una firma digitale al certificato.

È necessario un certificato emesso da una CA (che è possibile creare). Quindi aggiungere il certificato ai certificati di fiducia (se autofirmato o meno da una CA riconosciuta standard). Quando crei file PDF hai la possibilità di firmare il file con quel certificato. La firma del certificato è la tua firma digitale ...

Esiste un HowTo decente che risale al 2009 ma è ancora valido: link

    
risposta data 30.04.2013 - 22:23
fonte
1

Un certificato contiene sempre una firma, ma su se stessa, non su un documento PDF. Questa firma è parte integrante del certificato ed è stata calcolata dalla CA che ha emesso il certificato; questo è verificando questa firma che ogni software può guadagnare una certa fiducia nel contenuto del certificato. Tutto ciò avviene indipendentemente da qualsiasi file PDF e probabilmente anche prima che il file PDF esista.

Quando firmi un documento "con un certificato", stai effettivamente calcolando una firma sul PDF con la tua chiave privata - la chiave privata non è nel tuo certificato, ma il certificato contiene corrispondente chiave pubblica . Quindi, la firma stessa e una copia del certificato devono essere inclusi nel file PDF.

Documenti Adobe che le firme possono essere calcolate con i loro prodotti Reader e Acrobat. Può apparentemente essere eseguito anche con software libero .

    
risposta data 30.04.2013 - 22:31
fonte
1

La tua domanda è in realtà due domande diverse. Un certificato deve solo essere firmato da un altro certificato se deve esserci una catena di fiducia. Ad esempio, una CA radice firmerà i certificati emessi in modo che chiunque cerchi di verificare il certificato saprà che è considerato attendibile dalla CA. Puoi eseguire questo tipo di concatenamento con qualsiasi certificato che consenta la firma del certificato.

Per i documenti d'altra parte, è necessario solo un certificato approvato per l'autenticazione del client. Se si sta eseguendo la propria CA, il certificato è probabilmente approvato per qualsiasi scopo, ma mancherà la fiducia di chiunque altro. Per firmare un PDF, è sufficiente importare il certificato in Acrobat e quindi utilizzare l'identità per firmare il documento.

    
risposta data 30.04.2013 - 22:32
fonte
1

Se si desidera firmare un PDF, la maggior parte dei writer PDF e alcune versioni del solo lettore avranno un meccanismo incorporato per la firma e alcuni anche per il timestamp. Ti chiederà di fornire il file del certificato e poi applicherà la firma digitale nel file. I PDF in particolare hanno questo meccanismo integrato nel formato, ma è anche possibile firmare qualsiasi tipo di file. Una cosa importante da notare per i neofiti della firma in PDF è che è possibile firmare un PDF senza un segno visibile sulla pagina. La firma è in realtà metadata e qualsiasi tipo di marcatura nella pagina è facoltativo.

Adobe fornisce un video tutorial su come firmare un PDF . Puoi anche leggere altra documentazione sul sito di Adobe.

Puoi anche fare la firma digitale dei file con gli strumenti della riga di comando, ma se sei nuovo nel processo, un programma come PortableSigner o forse j4sign potrebbe funzionare bene per te. Puoi sfogliare SourceForge e Github per cercare altri progetti applicabili che potrebbero soddisfare le tue esigenze.

    
risposta data 01.05.2013 - 01:36
fonte