qfaq openssl

Faq openssl

Pubblicato il Pubblicato in Faq, Firma digitale, System administrator

Estrazione del contenuto di un file firmato digitalmente (p7m)

Consideriamo il caso in cui il documento firmato sia un pdf (documento.pdf.p7m).

Per estrarre il file contenuto utilizziamo il comando openssl con il parametro smime per la verifica della firma (-verify)

openssl smime -verify -noverify -in documento.pdf.p7m -inform DER -out documento.pdf

Per maggiori informazioni vedere l’articolo

Estrazione del certificato di un file firmato digitalmente (p7m)

Consideriamo il caso in cui il documento firmato sia un pdf (documento.pdf.p7m).

Per estrarre il certificato utilizzato per firmare il p7m utilizziamo il comando openssl con il parametro pkcs

openssl pkcs7 -inform DER -in documento.pdf.p7m -print_certs -out cert.pem

il certificato verrà estratto nel file cert.pem e se si vuole visualizzare in modo testuale basta il comando per i certificati x509

openssl x509 -in cert.pem -text -noout

Per maggiori informazioni vedere l’articolo

Verifica della firma di un documento p7m

Consideriamo il caso in cui il documento firmato sia un pdf (documento.pdf.p7m).

Per verificare la firma ed estrarre il file contenuto utilizziamo il comando openssl con il parametro smime per la verifica della firma (-verify)

openssl smime -in documento.pdf.p7m -inform DER -verify -CAfile CA.pem -out documento.pdf

Dove CA.pem contiene il certificato della CA (Certificate Authority) che ha rilasciato il certificato presente nel p7m.

Per maggiori informazioni vedere l’articolo

Trust certificate authority per firma digitale

Se si tenta di verificare la firma di un file p7m senza il certificato dell’ente certificatore (la CA), la verifica fallisce (“unable to load certificate“) perché non abbiamo i certificati di fiducia della CA (i cosiddetti Trust).
Tali Certificate Authority sono state definite per legge italiana e sono registrati sul CNIPA, che dal dicembre 2009 è diventato DigitPA, come portafoglio di certificati XML e li ho trovati sullo stesso sito all’indirizzo https://applicazioni.cnipa.gov.it/TSL/_IT_TSL_signed.xml.
Per far in modo che openssl li gestisca bisogna metterli nel suo formato quindi:

wget -O - https://applicazioni.cnipa.gov.it/TSL/_IT_TSL_signed.xml | perl -ne 'if (/<X509Certificate>/) {
s/^\s+//; s/\s+$//;
s/<\/*X509Certificate>//g;
print "-----BEGIN CERTIFICATE-----\n";
while (length($_)>64) {
print substr($_,0,64)."\n";
$_=substr($_,64);
}
print $_."\n";
print "-----END CERTIFICATE-----\n";
}' >CA.pem

In tal modo abbiamo tutti i certificati presenti in un unico file CA.pem, purtroppo anche quelli che forse sono scaduti.
Anche se scaduti potremmo aver bisogno di verificare un file vecchio e quindi ci possono servire anche gli scaduti.
Per maggiori informazioni vedere l’articolo

Per gli aggiornamenti allo script consultare https://github.com/eniocarboni/getTrustCAP7m

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *