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
Vedi tutte le FAQsEstrazione 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
Vedi tutte le FAQsVerifica 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
Vedi tutte le FAQsTrust 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
5 pensieri su “Faq openssl”
Ho trovato interessantissimo lo script p7m, è possibile aggiungere la decriptazione di un file firmato e cifrato?
Grazie
Ciao Sebastiano, sicuramente è possibile ma bisogna capire a quale tipo di cifratura ti riferisci. Comunque sia non è lo scopo di p7m analizzare il contenuto del file estratto.
Grazie mille per il commento.
Buongiorno Enio, Trovo i tuoi articoli molto interessanti, ma girovagando su interner trovo mille maniere per decifrate i file XML.p7m delle fatture, ma pochissimo per quanto riguarda la possibilità di firmarli (io uso php) ma anche linea di comando, Ora A parte di dike (che è solo per ubuntu) Presumo che come si possa decifrare si possa anche cifrare in CADES hai qualche suggerimento / guida ? Io ho la tessera nel lettore smart con la CNS.. Ti ringrazio e buon lavoro..
Ciao Massimo, prova a vedere la risposta a questa issue del mio software p7m se può rispondere in qualche modo alla tua domanda.
Grazie Enio..
Guardo subito