Sito in manutenzione, alcuni link potrebbero non funzionare correttamente

File p7m e loro decodifica

Uno dei vantaggi della fatturazione elettronica per i cittadini, รจ la possibilitร  di automatizzare il trattamento del contenuto delle fatture. In abbinamento con PowerApps รจ possibile creare automatismi anche per le piccole societร .

Il formato p7m viene utililizato non solo per la fatturazione elettronica, ,ma per lo scambio di documenti firrmati sia con la pubblica amministrazione che tra privati. Non sempre perรฒ che riceve un file in formato p7m sa come aprirlo.

Sul sito Infocert รจ di disponibile il software Dyke (https://www.firma.infocert.it/installazione/) che consente di firmare e, soprattutto leggere i file firmati. E’ un software che personalmente non gradisco, ogni volta chiede di essere aggiornato, ogni volta scarica i nuovi certificati per poter verificare l’autenticitร  della firma e ogni volta fatico a trova la funzione che mi serve. Mi sono detto che dev’essere semplice decodificare (per usare un termine informatico) o togliere dalla busta, (per usare termine business) un file p7m.

Per usare una similitudine possiamo vedere il il p7m come una busta che contiene un file. La busta garantisce che il contenuto, ossia il file, non รจ stato manomesso da quando รจ stato imbustato. La busta contiene inoltre il certificato, ossia sigillo, di chi l’ha imbustato. E’ quindi sempre possibile stabile l’autenticitร  del documento e sua originalitร .

Visto che tecnicamente si tratta di certificati, lo strumento piรน adatto รจ openssl. Se siamo interessati solo leggere il contenuto e non a verificare l’autenticitร  del documento le cose sono relativamente semplici. Se dobbiamo verificare l’autenticitร , ossia che chi l’ha imbustato รจ chi dice di essere le cose sono piรน complesse perchรฉ occorre scaricare l’elenco degli issuer da un sito attendibile (es: infocert, poste,…). In questo secondo caso secondo me conviene usare dike o altri software.

Se, come detto occorre solo spacchettare il contenuto, con openssl รจ relativamente facile. Prima occorre verificare se il file รจ codificato in base64. Tutte le “buste” possono venire codificate in base64, senza che l’estensione venga modificata. Perchรฉ? Non lo so, personalmente avrei lasciato la codifica base64 fuori dalle specifiche, quando un documento viene allegato a un protollo testuale viene automaticamente codificato base64.

Ecco il comando con la spiegazione dei parametri openssl usati:

cat ./IT13336240158_0HPZH.xml.p7m | openssl cms -verify -inform DER -noverify -no_attr_verify -out IT13336240158_0HPZH.xml

L’operazione openssl puรฒ essere smime o cms, tecnicamente fanno la stessa cosa, in giro ho letto che cms รจ piรน permissimo rispetto a smime, nelle prove fatte dove si piantava smime, si pianta anche cms. I messaggi di errore cambiano leggermente.

Dopo l’operazione occorre il comando che รจ ‘-verify’, ossia verifica il messaggio firmato, omettendo -verify si ottiene il seguente errore:

 "No operation option (-encrypt|-decrypt|-sign|-verify|...) specified."

cat ./IT13336240158_0HPZH.xml.p7m | tr -d '\r\n' | openssl base64 -d -A | openssl smime -verify -inform DER -noverify -no_attr_verify -out IT13336240158_0HPZH.xml

cat: Legge il contenuto del file
tr:

Il parametro -inform DER specifica il formato del messaggio in ingresso puรฒ essere SMIME PEM, o DER, nel caso delle firme italiane รจ DER. Senza questo parametro l’errore sarร :

Error reading S/MIME message
34359738384:error:0D0D40D1:asn1 encoding routines:SMIME_read_ASN1:no content type:crypto/asn1/asn_mime.c:399:

Il parametro “-noverify” specifica di non verificare l’autenticitร  dei certificati, senza questo parametro si riceve l’errore:

Verification failure
34359738384:error:21075075:PKCS7 routines:PKCS7_verify:certificate verify error:crypto/pkcs7/pk7_smime.c:284:Verify error:unable to get local issuer certificate
o 
Verification failure
34359738384:error:2E099064:CMS routines:cms_signerinfo_verify_cert:certificate verify error:crypto/cms/cms_smime.c:252:Verify error:unable to get local issuer certificate

In fine abbiamo il parametro per generare l’output.


Commenti

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

WP to LinkedIn Auto Publish Powered By : XYZScripts.com