DAS Elettronico

Quindi, giusto per capire bene. Il certificato è intestato alla ditta “AAA”, e su questo certificato vi è una delega per la persona fisica “PAPERINO”. L’invio del file XML prevede una firma. La firma NON DEVE NECESSARIAMENTE ESSERE intestata a “PAPERINO”, ma può essere intestata anche ad un’altra persona purchè sia un formato valido e un certificato riconosciuto.
Ciò dovrebbe essere sufficiente a ricevere un esito positivo in fase di trasmissione (al di là della correttezza dei dati inseriti).
Giusto?

Esatto. Io sto eseguendo i vari invii firmando i files con un certificato di una persona che è assolutamente estranea alla ditta carburanti. La trasmissione è eseguita da Paperino (persona fisica delegata dalla ditta Banda Bassotti) ma il file è firmato da Zio Paperone.

Se ci pensi è abbastanza logico. Immagina una ditta che ha varie postazioni informatiche che generano DAS e devono eseguire la trasmissione. La trasmissione viene eseguita col certificato di Paperino ma il file è firmato da un certificato diverso per ogni postazione (anche perché la postazione per firmare ha bisogno di un certificato fisicamente presente). Ovviamente puoi anche fare tutto con un solo certificato di firma (centralizzi le trasmissioni, ma era comodo l’esempio multipostazione)

Si, infatti confrontando due files, uno firmato di certo in maniera corretta, e uno firmato da me, ci sono parecchie differenze a livello di tag XML. Ho provato un invio con la firma corretta ed indovina? Mi ha restituito uno IUT e l’esito “20 - Acquisito a sistema”.

Ciò mi conforta oltre ogni dire, perchè so che devo impostare per bene la procedura di firma (quindi è un qualcosa dipendente da me, e non dalle Dogane e dai loro certificati), e anche perchè posso fare tutte le prove del caso con la mia firma personale, e non andare a chiedere quella del cliente.

Grazie mille ancora, Stefano, per il tuo prezioso aiuto.

Salve a tutti! Spero voi possiate aiutarmi…
Da qualche settimana non riesco più ad inviare nulla nell’ambiente di test perché continua a restituirmi lo stesso errore:

<ns2:codice>2</ns2:codice>
 <ns2:messaggio>Il certificato utilizzato per la firma non e' valido</ns2:messaggio>

Questo succede da metà luglio circa, mentre prima ha sempre funzionato (abbiamo fatto decine di test).
Io ho sempre utilizzato il certificato del Desktop Dogane per apporre la firma sull’XML, in quanto così mi è stato detto dall’assistenza tecnica.
Ho provato anche con CNS (con 3 CNS diverse) ma nulla.
In seguito è come appare il tag Signature:

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SignatureID01">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
</ds:SignedInfo>
<ds:SignatureValue>(Signature Value)</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>(Certificato)</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<ds:Object>
<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:xades141="http://uri.etsi.owrg/01903/v1.4.1#" Target="#xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504">
<xades:SignedProperties>
<xades:SignedSignatureProperties>
<xades:SigningTime>2020-08-28T13:06:30Z</xades:SigningTime>
<xades:SigningCertificate>
<xades:Cert>
<xades:CertDigest>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>adQy98MLeN26i7C41WgFaAKb8YY/yJximVGdk6mUkPQ=</ds:DigestValue>
</xades:CertDigest>
<xades:IssuerSerial>
<ds:X509IssuerName>CN=InfoCert Servizi di Certificazione 2, SERIALNUMBER=(Serial number), OU=Ente Certificatore, O=INFOCERT SPA, C=IT</ds:X509IssuerName>
<ds:X509SerialNumber>(Serial number)</ds:X509SerialNumber>
</xades:IssuerSerial>
</xades:Cert>
</xades:SigningCertificate>
</xades:SignedSignatureProperties>
</xades:SignedProperties>
</xades:QualifyingProperties>
</ds:Object>
</ds:Signature>

A questo punto penso che manchi qualcosa all’interno della firma.
Avete idee?
Grazie in anticipo.

Dal 22/07 è cambiato tutto, il certificato estratto da Desktop Dogane non va più bene (dato che non è una CA riconosciuta). Quindi serve un altro certificato, come Aruba o Digicert.
Tuttavia non basta, bisogna generare un tracciato XML (parlo della parte firma, ovviamente) ben strutturato.
Non ti so dire come, perchè sto facendo anche io varie prove per arrivare al risultato “corretto”. Cosa usi per generare la firma?

Una DLL licenziata Chilkat DLL

Guarda, so per certo che quella DLL funziona. Io uso FirmaXadesNet, e devo ancora capire come configurare i parametri per fare in modo che funzioni bene com Chilkat. Comunque se segui il tutorial che c’è sul loro sito dovrebbe andare bene…

Si funziona benissimo quella DLL infatti fino a metà luglio ho inviato ogni tipo di messaggio (DE815, DE810, DE813, DE818) senza problemi con il conseguente esito contenente codice SRC e pdf per la stampa cartacea.
Il problema è che ora non riesco più a ricevere un esito positivo sebbene la modalità in cui firmo i file non sia cambiata, anzi ho provato ad utilizzare anche la CNS ma nulla.
Quindi la mia ipotesi è che i requisiti della firma siano cambiati ma mi aspetterei di ricevere un altro codice di errore (esempio il codice 1 sta per “La verifica della firma è fallita”, secondo il manuale pubblicato da adm).
Tu riesci ad inviare correttamente con esito positivo? Se sì potresti cortesemente girarmi un estratto del tag ds:Signature? Grazie.

Non posso mandarti nulla perchè neanche io lo genero correttamente, in quanto la mia procedura neanche funziona. Devo vedere se riesco a configurare correttamente FirmaXadesNet, altrimenti dovrò andare anche io su Chilkat.

Presumo che (Signature Value), (Certificato) e (Serial number) contengano i valori corretti che tu hai sostituito con i dati in parentesi per pubblicare il tuo post (altrimenti abbiamo già trovato il problema, ha ha ha… )
Nella sezione SignedInfo hai inserito i dati del metodo ma non hai inserito alcun Reference e credo che ci voglia come minimo un reference al tuo ID su KeyInfo.
Nel KeyInfo ovviamente ti serve un ID che possa far risolvere il reference del Digest della SignedInfo
Metti un ID anche nelle SignedProperties,

Ho inserito gli id che mi hai detto ma ricevo lo stesso errore (codice 2 - il certificato utilizzato per la firma non è valido).
Ma come valore dell’attributo id posso mettere qualsiasi cosa?
Ho controllato l’xml con questo tool e mi dice che il formato della firma è corretto.
Io sto usando una CNS rilasciata da Infocert che compare nella lista dei certificatori qualificati quindi in teoria è valido come certificato.
Di seguito il nuovo tag ds:Signature:

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504">
<ds:SignedInfo Id="xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-signedinfo">
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<ds:Reference URI="#xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-keyinfo">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>1u7Z3ep7e/dVuCeWtpPudJmc5pt8QvcyQRqvBbKdxZ0=</ds:DigestValue>
</ds:Reference>
<ds:Reference Id="xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-ref0" URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>MAjZg/htspl6igpJ3mu05qbEwEX4OTlPwP3/Nh26KOc=</ds:DigestValue>
</ds:Reference>
<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-signedprops">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>MIjGHb8PAhWqrTIzPPoZdilFYLel7pX7C1MdIAcbmHA=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue Id="xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-sigvalue">(Signature Value)</ds:SignatureValue>
<ds:KeyInfo Id="xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-keyinfo">
<ds:X509Data>
<ds:X509Certificate>(Certificate)</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<ds:Object>
<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:xades141="http://uri.etsi.org/01903/v1.4.1#" Target="#xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504">
<xades:SignedProperties Id="xmldsig-6f4b994a-7191-4bb1-ab3c-17549515b504-signedprops">
<xades:SignedSignatureProperties>
<xades:SigningTime>2020-08-31T12:29:38Z</xades:SigningTime>
<xades:SigningCertificate>
<xades:Cert>
<xades:CertDigest>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<ds:DigestValue>adQy98MLeN26i7C41WgFaAKb8YY/yJximVGdk6mUkPQ=</ds:DigestValue>
</xades:CertDigest>
<xades:IssuerSerial>
<ds:X509IssuerName>CN=InfoCert Servizi di Certificazione 2, SERIALNUMBER=(Serial Number), OU=Ente Certificatore, O=INFOCERT SPA, C=IT</ds:X509IssuerName>
<ds:X509SerialNumber>(Serial Number)</ds:X509SerialNumber>
</xades:IssuerSerial>
</xades:Cert>
</xades:SigningCertificate>
</xades:SignedSignatureProperties>
</xades:SignedProperties>
</xades:QualifyingProperties>
</ds:Object>
</ds:Signature>

Sono disperato ahahah

Non confondere “Certificato corretto” con “Certificato valido”.
Chilkat ti può solo dire se il certificato è formalmente corretto, non se il certificato è corertto in base alle rules di validazione.
Anzitutto, mi scaricherei File Protect 6 (freeware) e controllerei se quel software mi dice che il certificato è valido oppure no. Nel tuo caso vedrai che ti dirà che non è valido (pur essendo formalmente corretto).

Aggiornamento:
la firma che genero è formalmente corretta il problema sta nel certificato:
all’interno della CNS che sto utilizzando per le prove (la mia è di Inforcert, non so se è così per tutte le smartcard) sono presenti 2 certificati di cui uno è quello che deve essere utilizzato per la firma… Ovviamente io stavo usando l’altro.
Selezionando il certificato corretto sembra funzionare tutto.
Grazie Stefano per l’aiuto.

Una domanda:
sapete se è possibile farsi rilasciare un certificato per la firma digitale su file (chiave pubblica + chiave privata)?
Vorrei poter fare l’invio del DAS elettronico attraverso un servizio windows e non vorrei attaccare una chiavetta USB o una CNS sulla macchina dove gira il servizio.
Grazie.

1 Mi Piace

Sto cercando anche io questa possibilità… Il programma File Protector potrebbe consentirti di farlo, da quello che ho visto (c’è proprio la voce “Richiedi Certificato”), ma serve un codice a quanto ho capito fornito insieme alla firma (che tuttavia io non ho trovato). Ho letto anche che alcuni servizi consentono di avere un certificato da installare sul server principale per consentire la firma da più computer sulla stessa rete aziendale, ma leggevo di prezzi tra i 3000 e i 5000 euro.

Se qualcuno ne sa di più si faccia avanti…

Ciao @meltigel, con File Protector puoi esportare il certificato di firma. Ma se il certificato non consente l’esportazione della chiave private te ne fai poco.
Da quel po’ che ho visto i certificati di firma su dispositivi (USB, CNS) non consento l’esportazione della chiave privata.

Mi chiedevo come mai per l’invio della Fatturazione Elettronica o di altri documenti ai Web Service delle Dogane è possibile utilizzare un certificato di firma su file fornito direttamente dall’ente che offre i Web Service, mentre per il DAS no.
Mi sfugge qualcosa?
Ci sono enti autorizzati che rilasciano la firma digitale su file?
Oppure lo scenario di utilizzo prevede che in ogni postazione ci sia attaccato il dispositivo per la firma digitale dell’utente che sta lavorando?

Se qualcuno sa darmi delucidazioni in merito, lo ringrazio davvero molto.

Ah, ecco… Non avendo il codice di esportazione non avevo provato. Gli enti autorizzati ci sono (Aruba e Namirial sicuramente), ma i costi sono elevatissimi. Secondo me lo scenario di utilizzo ideale sarebbe una sola postazione adibita alla trasmissione del DAS, con collegato il dispositivo di firma, idealmente intestato al delegato all’invio designato dall’azienda.
Ho comunque avuto conferma in prima persona, in seguito a diverse prove fatte, che la firma può essere di chiunque, anche di una persona esterna. L’importante è che sia una firma valida.

Buongiorno a tutti.
Volevo chiedervi se servono 2 certificati di autenticazione differenti per collegarsi all’ambiente buono e all’ambiente di test.

Dal portale delle Dogane in gestione Certificati sono riuscito a generato il certificato per l’ambiente buono. Però se clicco sul link per generare il certificato per l’ambiente di prova mi dice che non sono autorizzato.
Ho fatto la richiesta di autorizzazioni per il servizio GESTIONE CERTIFICATI.
Devo fare un’altra richiesta anche per un altro servizio?

L’assistenza delle dogane mi dice che basta un solo certificato.
Se è così, non capisco perché se da browser scrivo l’url dell’ambiente buono e uso il certificato mi viene fuori


che mi fa capire che il certificato è corretto.

Se faccio la stessa cosa in ambiente di test (o provo ad inviare un documento) ho il solito errore
image

Qualcuno sa spiegarmi il perchè?
Grazie

L’autorizzazione per l’ambiente di Test arriva entro 24 ore (abbi moooooolta pazienza).
La cosa strana è che puoi entrare subito nell’ambiente reale, ma l’ambiente di addestramento ci mette un sacco di tempo per attivarsi.
In questo momento non so dirti se basta un solo certificato per ambiente reale e ambiente prova. Io ho sempre aspettato che si attivasse l’ambiente di addestramento e genero il certificado da addestramento…

Ciao a tutti,
sto avendo problemi con la firma digitale.
Sto firmando i file xml utilizzando FileProtector6 per fare delle prove prima di replicare la firma via codice.
Il WebService risponde con il seguente errore:

La verifica dell’integrita’ del messaggio e’ fallita

Di sotto riporto lo scheletro del documento firmato che sto inviando

<?xml version="1.0" encoding="UTF-8"?>
<DE815 xmlns="http://das.dogane.finanze.it" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">	
	(Tag Documento DE815)	
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signer-T-1600092692178">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2006/12/xml-c14n11"></ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"></ds:SignatureMethod>
<ds:Reference Type="http://uri.etsi.org/01903#SignedProperties" URI="#SignedProperties-Signer-T-1600092692178">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></ds:DigestMethod>
<ds:DigestValue>(DigestValue)</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
<dsig-xpath:XPath xmlns:dsig-xpath="http://www.w3.org/2002/06/xmldsig-filter2" Filter="subtract">/descendant::ds:Signature</dsig-xpath:XPath>
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></ds:DigestMethod>
<ds:DigestValue>(DigestValue)</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#KeyInfo-Signer-T-1600092692178">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></ds:DigestMethod>
<ds:DigestValue>(DigestValue)</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue Id="SignatureValue-Signer-T-1600092692178">
(SignatureValue)
</ds:SignatureValue>
<ds:KeyInfo Id="KeyInfo-Signer-T-1600092692178">
<ds:X509Data>
<ds:X509Certificate>
(X509Certificate)
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<ds:Object>
	<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" Target="#Signer-T-1600092692178">
		<xades:SignedProperties Id="SignedProperties-Signer-T-1600092692178">
			<xades:SignedSignatureProperties>
				<xades:SigningTime>2020-09-14T16:11:32+02:00</xades:SigningTime>
				<xades:SigningCertificate>
					<xades:Cert>
						<xades:CertDigest>
							<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></ds:DigestMethod>
							<ds:DigestValue>(DigestValue)</ds:DigestValue>
						</xades:CertDigest>
						<xades:IssuerSerial>
							<ds:X509IssuerName>(X509IssuerName)</ds:X509IssuerName>
							<ds:X509SerialNumber>(X509SerialNumber)</ds:X509SerialNumber>
						</xades:IssuerSerial>
					</xades:Cert>
				</xades:SigningCertificate>
			</xades:SignedSignatureProperties>
		</xades:SignedProperties>
	</xades:QualifyingProperties>
</ds:Object>
</ds:Signature>	
</DE815>

Qualcuno sa dirmi cosa c’è di sbagliato?
Grazie in anticipo.