# OpenSSL in errore su fattura firmata Actalis

**URL:** <https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256>\
**Category:** Fatturazione Elettronica\
**Created:** [22 Novembre 2019, 2:19pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256 "2019-11-22T14:19:43Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![MicheleMaran](https://forum.italia.it/letter_avatar_proxy/v4/letter/m/f9ae1b/32.png) [@MicheleMaran](https://forum.italia.it/u/MicheleMaran)\
**Post date:** [22 Novembre 2019, 2:19pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/1 "2019-11-22T14:19:43Z")

</div>

Buongiorno  
stiamo verificando un problema in estrazione di fattura da XML non codificato BASE64, file che con DIKE si estrae senza problemi mentre openSSL va in errore.  
openssl smime -verify -in C:\OpenSSL-Win64\bin\actalis.p7m -inform DER -noverify -out C:\OpenSSL-Win64\bin\actalis.xml

8552:error:0D0680A8:asn1 encoding routines:asn1\_check\_tlen:wrong tag:crypto\asn1\tasn\_dec.c:1130:  
8552:error:0D07803A:asn1 encoding routines:asn1\_item\_embed\_d2i:nested asn1 error:crypto\asn1\tasn\_dec.c:290:Type=PKCS7\_ISSUER\_AND\_SERIAL  
8552:error:0D08303A:asn1 encoding routines:asn1\_template\_noexp\_d2i:nested asn1 error:crypto\asn1\tasn\_dec.c:627:Field=issuer\_and\_serial, Type=PKCS7\_SIGNER\_INFO  
8552:error:0D08303A:asn1 encoding routines:asn1\_template\_noexp\_d2i:nested asn1 error:crypto\asn1\tasn\_dec.c:596:Field=signer\_info, Type=PKCS7\_SIGNED  
8552:error:0D08303A:asn1 encoding routines:asn1\_template\_noexp\_d2i:nested asn1 error:crypto\asn1\tasn\_dec.c:627:  
8552:error:0D08403A:asn1 encoding routines:asn1\_template\_ex\_d2i:nested asn1 error:crypto\asn1\tasn\_dec.c:477:Field=d.sign, Type=PKCS7

L’errore è sistematico e solo -al momento- su pacchetti firmati da certificato emesso da Actalis (Aruba).

Ecco il file per chi volesse darmi una mano: [https://maranmichele-my.sharepoint.com/:f:/g/personal/maranmichele\_maranmichele\_it/EisGPUW-6RlHt9PAIzXvmtEB\_MCJZk5uQ4V-rtB\_R3ZeXg?e=lbM5WDù](https://maranmichele-my.sharepoint.com/:f:/g/personal/maranmichele_maranmichele_it/EisGPUW-6RlHt9PAIzXvmtEB_MCJZk5uQ4V-rtB_R3ZeXg?e=lbM5WD%C3%B9)  
Qualche idea?  
Grazie

---

<div class="post-metadata">

**Author:** ![ggiorgetti](https://forum.italia.it/letter_avatar_proxy/v4/letter/g/5daacb/32.png) [@ggiorgetti](https://forum.italia.it/u/ggiorgetti)\
**Post date:** [22 Novembre 2019, 2:38pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/2 "2019-11-22T14:38:36Z")

</div>

Ciao  
Io ho lo stesso problema con le ultime fatture emesse in novembre da E-DISTRIBUZIONE  
Quelle più vecchie non avevano nessun problema

Per ora ho risolto “a mano” togliendo tutto ciò che sta prima a  
\<p:FatturaElettronica\> e tutto ciò che sta dopo a  
\</p:FatturaElettronica\>  
e salvando il file con estensione XML

… seguo

---

<div class="post-metadata">

**Author:** ![vbato](https://forum.italia.it/letter_avatar_proxy/v4/letter/v/3e96dc/32.png) [@vbato](https://forum.italia.it/u/vbato)\
**Post date:** [22 Novembre 2019, 3:48pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/3 "2019-11-22T15:48:33Z")

</div>

Ho già risposto nell’altro thread:

> [@File p7m contenenti file binario](https://forum.italia.it/t/file-p7m-contenenti-file-binario/8522/30):
>
> Ciao. Usando il comando “openssl cms” invece di “openssl smime” dovrebbe funzionare. I due comandi fanno più o meno la stessa cosa, ma il comando cms “digerisce” una varietà più ampia di file. Maggiori informazioni qui:

---

<div class="post-metadata">

**Author:** ![MicheleMaran](https://forum.italia.it/letter_avatar_proxy/v4/letter/m/f9ae1b/32.png) [@MicheleMaran](https://forum.italia.it/u/MicheleMaran)\
**Post date:** [22 Novembre 2019, 3:59pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/4 "2019-11-22T15:59:53Z")

</div>

Direi perfetto. Funziona a meraviglia.  
Grazie mille per il suggerimento.  
Buona continuazione

---

<div class="post-metadata">

**Author:** ![Paolo\_Ferraris](https://forum.italia.it/user_avatar/forum.italia.it/paolo_ferraris/32/2619_2.png) [@Paolo\_Ferraris](https://forum.italia.it/u/Paolo_Ferraris)\
**Post date:** [24 Aprile 2020, 2:49pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/5 "2020-04-24T14:49:24Z")

</div>

Solo a me capita che alcuni file li possono decodificare con

`openssl smime ......`

e altri con

`openssl cms ...`

Come fate voi? Uno swtich?

---

<div class="post-metadata">

**Author:** ![Romolo\_Manfredini](https://forum.italia.it/user_avatar/forum.italia.it/romolo_manfredini/32/1934_2.png) [@Romolo\_Manfredini](https://forum.italia.it/u/Romolo_Manfredini)\
**Post date:** [25 Aprile 2020, 7:36pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/6 "2020-04-25T19:36:21Z")

</div>

Prima provo a decodificare con openssl smime  
se trovo il file di output vuol dire che ha decodificato ed allora proseguo altrimenti provo openssl cms

Soluzione un po’ del menga ma non ne ho trovate altre…  
Nessuna delle due copre tutti i casi.

---

<div class="post-metadata">

**Author:** ![Paolo\_Ferraris](https://forum.italia.it/user_avatar/forum.italia.it/paolo_ferraris/32/2619_2.png) [@Paolo\_Ferraris](https://forum.italia.it/u/Paolo_Ferraris)\
**Post date:** [26 Aprile 2020, 12:32pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/7 "2020-04-26T12:32:49Z")

</div>

Grazie Romolo, anche io faccio così… aggiungo anche una codifica base64 come terza opzione in caso di fallimenti di entrambi…

Magari meglio usare qualche altro applicativo e non openssl a questo punto

---

<div class="post-metadata">

**Author:** ![Romolo\_Manfredini](https://forum.italia.it/user_avatar/forum.italia.it/romolo_manfredini/32/1934_2.png) [@Romolo\_Manfredini](https://forum.italia.it/u/Romolo_Manfredini)\
**Post date:** [26 Aprile 2020, 11:12pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/8 "2020-04-26T23:12:40Z")

</div>

Non vedo quali altri applicativi possa usare in ambiente linux.  
Onestamente non capisco perchè alcune fatture non vengano decodificate correttamente usando cms (che dovrebbe decodificare anche le s/mime in accordo alla documentazione)  
Non ho ancora approfondito dato che in questo periodo non ho troppo tempo per farlo e ci ho messo una pezza a quel modo.  
Mi viene da pensare che almeno nella versione 1.1.1 che sto usando io (ubuntu 18.04.4 lts) openssl abbia qualche difetto.

---

<div class="post-metadata">

**Author:** ![Paolo\_Ferraris](https://forum.italia.it/user_avatar/forum.italia.it/paolo_ferraris/32/2619_2.png) [@Paolo\_Ferraris](https://forum.italia.it/u/Paolo_Ferraris)\
**Post date:** [27 Aprile 2020, 3:37pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/9 "2020-04-27T15:37:39Z")

</div>

Ho dei file di prova se interessato a testare.

Su linux pensavo a qualche librerira python come alternativa

---

<div class="post-metadata">

**Author:** ![itajackass](https://forum.italia.it/user_avatar/forum.italia.it/itajackass/32/2992_2.png) [@itajackass](https://forum.italia.it/u/itajackass)\
**Post date:** [27 Aprile 2020, 4:15pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/10 "2020-04-27T16:15:40Z")

</div>

Ciao, c’è qualcuno che conosce l’equivalente di `openssl cms` in php?  
Siccome sul server non posso usare il comando exec().

Attualmente il 99% delle fatture firmate me le legge con

```auto
@$output = openssl_pkcs7_verify ("file.p7m" , PKCS7_NOVERIFY , null ,array('CA.pem'), 'CA.pem', 'file_cleaned.xml');

```

dopo aver convertito il file con der2smime.

Ma ahimè l’ 1% delle fatture non funziona e non trovo l’equivalente di php per il comando CMS

---

<div class="post-metadata">

**Author:** ![Romolo\_Manfredini](https://forum.italia.it/user_avatar/forum.italia.it/romolo_manfredini/32/1934_2.png) [@Romolo\_Manfredini](https://forum.italia.it/u/Romolo_Manfredini)\
**Post date:** [27 Aprile 2020, 5:58pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/11 "2020-04-27T17:58:54Z")

</div>

Attualmente non esiste l’equivalente del comando cms in php.  
PHP espone un subset delle funzioni openssl.  
L’unica alternativa in questi casi è utilizzare l’exec. Ma se sul tuo server l’exec non è consentito puoi provare a scrivere un po’ di codice per estrarre i chuck dell’xml dalla busta p7m (se hai c…o è un’unico chunk)

---

<div class="post-metadata">

**Author:** ![Romolo\_Manfredini](https://forum.italia.it/user_avatar/forum.italia.it/romolo_manfredini/32/1934_2.png) [@Romolo\_Manfredini](https://forum.italia.it/u/Romolo_Manfredini)\
**Post date:** [27 Aprile 2020, 8:21pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/12 "2020-04-27T20:21:34Z")

</div>

Ho avuto oggi il tempo di fare un po’ di prove…

> [@Paolo\_Ferraris](#):
>
> Ho dei file di prova se interessato a testare.
> 
> Su linux pensavo a qualche librerira python come alternativa

Ho preso un file che fallisce la decodifica con cms (errore signature invalid)  
Con openssl 1.1.x cms da errore  
con openssl 1.0.2u cms decodifica correttamente.

Controlli più stringenti sulla validità del formato binario della firma fanno si che le più recenti versioni di openssl falliscano.  
Sembra, facendo un parsing dell’asn1, che ci sia un byte in più del dovuto nella sezione della firma.

Quindi delle due l’una: o mi compilo una versione locale di openssl 1.0.2h solo per la decodifica lasciando quella di sistema per tutto il resto https etc etc, o faccio i due passaggi…

Temo anche che qualsiasi libreria python linkata a openssl 1.1.x soffra dello stesso problema…

Edit: il controllo sembra stato introdotto in openssl 1.1.0c con questo commit su github dato che con openssl 1.1.0b funzionava ancora

> <https://github.com/openssl/openssl/pull/1474/commits/7340bcac9ed6d0f1cda739b3371c16eecd0f7d43>
>
> RFC 3447, section 8.2.2, steps 3 and 4 states that verifiers must encode
> the Dig…estInfo struct and then compare the result against the public key
> operation result. This implies that one and only one encoding is legal.
> 
> OpenSSL instead parses with crypto/asn1, then checks that the encoding
> round-trips, and allows some variations for the parameter. Sufficient
> laxness in this area can allow signature forgeries, as described in
> https://www.imperialviolet.org/2014/09/26/pkcs1.html
> 
> Although there aren't known attacks against OpenSSL's current scheme,
> this change makes OpenSSL implement the algorithm as specified. This
> avoids the uncertainty and, more importantly, helps grow a healthy
> ecosystem. Laxness beyond the spec, particularly in implementations
> which enjoy wide use, risks harm to the ecosystem for all. A signature
> producer which only tests against OpenSSL may not notice bugs and
> accidentally become widely deployed. Thus implementations have a
> responsibility to honor the specification as tightly as is practical.
> 
> In some cases, the damage is permanent and the spec deviation and
> security risk becomes a tax all implementors must forever pay, but not
> here. Both BoringSSL and Go successfully implemented and deployed
> RSASSA-PKCS1-v1\_5 as specified since their respective beginnings, so
> this change should be compatible enough to pin down in future OpenSSL
> releases.
> 
> See also https://tools.ietf.org/html/draft-thomson-postel-was-wrong-00
> 
> As a bonus, by not having to deal with sign/verify differences, this
> version is also somewhat clearer. It also more consistently enforces
> digest lengths in the verify\_recover codepath. The NID\_md5\_sha1 codepath
> wasn't quite doing this right.

Il che vuol dire che in giro c’è chi firma fuori dagli standard…

---

<div class="post-metadata">

**Author:** ![Paolo\_Ferraris](https://forum.italia.it/user_avatar/forum.italia.it/paolo_ferraris/32/2619_2.png) [@Paolo\_Ferraris](https://forum.italia.it/u/Paolo_Ferraris)\
**Post date:** [30 Aprile 2020, 5:42pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/13 "2020-04-30T17:42:09Z")

</div>

Mi è capitata questa fattura .p7m che con openssl non riesco proprio a decriptare

potete scaricarla qui  
[https://easyupload.io/qv5rtr](https://easyupload.io/qv5rtr)

allego anche una foto del file

 ![Cattura](https://forum.italia.it/uploads/default/original/2X/5/55bcfd10734727963e4db72dab72946f0d511b4e.jpeg)

---

<div class="post-metadata">

**Author:** ![Neapolis](https://forum.italia.it/user_avatar/forum.italia.it/neapolis/32/3490_2.png) [@Neapolis](https://forum.italia.it/u/Neapolis)\
**Post date:** [30 Aprile 2020, 5:55pm UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/14 "2020-04-30T17:55:21Z")

</div>

Si tratta di un documento “trattato” con base64,  
o meglio,  
prima firmato in p7m, e poi convertito in base64

quindi andando a ritroso, dovresti poterlo decifrare  
p.s. si tratta di una fattura di imponibile di 70,77 ed imposta 7,08.

---

<div class="post-metadata">

**Author:** ![Romolo\_Manfredini](https://forum.italia.it/user_avatar/forum.italia.it/romolo_manfredini/32/1934_2.png) [@Romolo\_Manfredini](https://forum.italia.it/u/Romolo_Manfredini)\
**Post date:** [1 Maggio 2020, 10:38am UTC](https://forum.italia.it/t/openssl-in-errore-su-fattura-firmata-actalis/12256/15 "2020-05-01T10:38:09Z")

</div>

Concordo, la mia procedura con gli xml.p7m per esteso fa i seguenti tentativi:  
1)openssl smime  
2)openssl cms  
3)base -d e se ha successo di nuovo la sequenza  
3.1)openssl smime  
3.2)openssl cms

Forse non è efficiente ma per ora mi ha sempre funzionato…
