DAS Elettronico

E’ un problema di algoritmo di firma. Il token di aruba, tramite la sua app, firma diversamente rispetto al software esterno.

Io ad esempio, facendo tutto da codice, utilizzo una libreria esterna che in base al certificato, effettua la firma. Prova, se possibile, a generare un XML dal programma J-EDAS del file firmato, in modo tale da renderti conto delle differenze nei tag della firma.

Inoltre, anzichè usare la loro app, prova ad usare un altro software, dovrebbero cambiare i tag e la modalità di firma.

Questo che ti ho girato è il file che firmo io ma che invia J-DAS

Si, io intendevo dire se avessi il file XML che firma e invia J-EDAS, sicuramente sarà differente il tag della firma…

Dovrebbe essere questo

<?xml version="1.0" encoding="UTF-8"?>
<DE815 xmlns="http://das.dogane.finanze.it">
    <attributiMessaggio>
        <MessageCode>DE815</MessageCode>
        <DeclaratorIdentifyCode>IT02769460813</DeclaratorIdentifyCode>
        <Filename>EDAS21112400000000004.xml</Filename>
        <MessageTypeCode>1</MessageTypeCode>
        <DeferredSubmissionFlag>0</DeferredSubmissionFlag>
    </attributiMessaggio>
    <dasElettronico>
        <InbulkTransportFlag>0</InbulkTransportFlag>
        <MesurementJourneyType>H</MesurementJourneyType>
        <JourneyTime>1</JourneyTime>
        <TransportArrangement>1</TransportArrangement>
        <OriginTypeCode>2</OriginTypeCode>
        <DateTimeOfDispatch>2021-11-24T12:04:53.000</DateTimeOfDispatch>
    </dasElettronico>
    <speditore>
        <ConsignorExciseNumber>IT00TPY00376C</ConsignorExciseNumber>
        <LuogoDiSpedizione>
            <DispatchPlaceTraderid>IT00TPY00376C</DispatchPlaceTraderid>
        </LuogoDiSpedizione>
    </speditore>
    <destinatarioELuogoDiConsegna>
        <Destinatario>
            <ConsigneeIterationNumber>1</ConsigneeIterationNumber>
            <LocalReferenceNumber>2021-265</LocalReferenceNumber>
            <InvoiceNumber>PI-265</InvoiceNumber>
            <InvoiceDate>2021-11-24</InvoiceDate>
            <DestinationTypeCode>12</DestinationTypeCode>
            <ConsigneeTraderid>IT00TPY00229B</ConsigneeTraderid>
        </Destinatario>
        <LuogoDiDestinazioneConsegna>
            <DeliveryPlaceTraderid>IT00TPY00229B</DeliveryPlaceTraderid>
        </LuogoDiDestinazioneConsegna>
        <AutFiscCompDestinatario></AutFiscCompDestinatario>
    </destinatarioELuogoDiConsegna>
    <versamenti>
        <NoPayment>1</NoPayment>
        <PaymentExclusionReason>111</PaymentExclusionReason>
    </versamenti>
    <trasporto>
        <TransportModeCode>3</TransportModeCode>
    </trasporto>
    <primoVettore>
        <TransportTraderVatNumber>IT02769460813</TransportTraderVatNumber>
    </primoVettore>
    <primoIncaricatoTrasporto>
        <DriverSurname>Martello</DriverSurname>
        <DriverName>Pietro</DriverName>
        <DriverNationality>IT</DriverNationality>
        <DriverID>MRTPTR94M30G348W</DriverID>
        <DriverADR>PA08504432</DriverADR>
    </primoIncaricatoTrasporto>
    <dettaglioTrasporto>
        <TransportIterationNumber>1</TransportIterationNumber>
        <TransportUnitCode>2</TransportUnitCode>
        <IdentityOfTransportUnits>IT CH775YT</IdentityOfTransportUnits>
    </dettaglioTrasporto>
    <merci>
        <DettaglioMerci>
            <GoodIterationNumber>1</GoodIterationNumber>
            <CPAProductCategory>E430</CPAProductCategory>
            <CnCode>27102011</CnCode>
            <Quantity>4006.680</Quantity>
            <GrossWeight>11500.00</GrossWeight>
            <NetWeight>3360.00</NetWeight>
            <Density15>0.84</Density15>
            <Volume>4000.00</Volume>
            <CommercialDescription>Gasolio Autotrazione 10PPM</CommercialDescription>
            <LanguageCommercialDescription>it</LanguageCommercialDescription>
            <Imballaggi>
                <KindOfPackages>VL</KindOfPackages>
            </Imballaggi>
        </DettaglioMerci>
    </merci><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signer-T-1637750714326">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2006/12/xml-c14n11#WithComments"></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-1637750714326">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></ds:DigestMethod>
<ds:DigestValue>QKSrV/WbfCEeRCO6e8GDOscm5QATbs/ViDo4Tde0BGU=</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>8uinGrPuKET243sljGEKaSXkOfDtEgtYoV6S9+2/JO8=</ds:DigestValue>
</ds:Reference>
<ds:Reference URI="#KeyInfo-Signer-T-1637750714326">
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></ds:DigestMethod>
<ds:DigestValue>npBfBUVG6q6ciDRJNDZlm1RCbm2BZvQxQc9pDOgNesw=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
VXB2K3KG/JLC6fFQtIyjVn3z/oWq59uLpBe0/jpLR5Gv91BICh94CBU+65tgjoyOzOhUwt5C1A7e
cHzrL85lbmsMZ8jjPFgV2J4DpR7cHfvva49HmQDId3EUmbUNqQy4tVYZ2F8iSB7d1WwoGt7rQiXg
CZ6GyDamSaqRQQ9Cx5W9PC3D6OlxV81aimNdSGsmkI/ER3orArKhsbBW67Gztsvr88N6xgSG6Ulv
njMscJCiwnJiftXOEnGyUZnbnG6I4L9wf7VbB8L8yHfISffY2pQ849DUNdZckm7cqD224wRXT1KI
Y9LsreLa6IBYZxPIMsu1rUtKYQ1pqOD1xONCbg==
</ds:SignatureValue>
<ds:KeyInfo Id="KeyInfo-Signer-T-1637750714326">
<ds:X509Data>
<ds:X509Certificate>
MIIIVDCCBjygAwIBAgIQaYXctJE/m6PdcdDUDuZs3jANBgkqhkiG9w0BAQsFADCBujELMAkGA1UE
BhMCSVQxGTAXBgNVBAcMEFBvbnRlIFNhbiBQaWV0cm8xFzAVBgNVBAoMDkFjdGFsaXMgUy5wLkEu
MRowGAYDVQRhDBFWQVRJVC0wMzM1ODUyMDk2NzEpMCcGA1UECwwgUXVhbGlmaWVkIFRydXN0IFNl
cnZpY2UgUHJvdmlkZXIxMDAuBgNVBAMMJ0FjdGFsaXMgRVUgUXVhbGlmaWVkIENlcnRpZmljYXRl
cyBDQSBHMTAeFw0yMTA2MjEwNjU2MjNaFw0yNDA2MjEwNjU2MjNaMIHfMQswCQYDVQQGEwJJVDEX
MBUGA1UECgwOSi1TT0ZUV0FSRSBTUkwxGjAYBgNVBGEMEVZBVElULTAxNDc0MDAwNTM0MR0wGwYD
VQQMDBRBTU1JTklTVFJBVE9SRSBVTklDTzESMBAGA1UEBAwJQkFUVEFHTElBMQ4wDAYDVQQqDAVN
QVJDTzEfMB0GA1UEBRMWVElOSVQtQlRUTVJDNzZUMDVDMDg1WjEYMBYGA1UEAwwPTUFSQ08gQkFU
VEFHTElBMR0wGwYDVQQuExRXU1JFRi0xNDI3NjUzMDAwNzkzNTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAKEE2WUQwFtkpT9eNYtLwf9It+aD3Iuy6rPTpqACUGQTeKjnHODu7rh9rLmQ
MDBlgZOtSVZekGIF9AguxUTWewdrzE4svsoG+t2cPmYs3vUkAtceo0bOXWsNTDUXCNOwHInniHI8
VBt7nqLRGOevOTsX6o48glJbg1dKvUVrUgcUvF0VhJrRtudO7tFlW0gesjOK1ZARPg6hvQWXFFCK
71ysnobke0UpijvBenkBh8Pma5wAE1xzQ0Cj7PL3WTP8KCJLVquRCnb3NxDo/qiPvzxblvpgpnyj
X7c95uSDbegHNHpQvug60RasHs9Mqo9xwMe01xZbvApakC2AMGbvdg8CAwEAAaOCAy0wggMpMB8G
A1UdIwQYMBaAFNi3AfGWc5bSaTpBPC5FOR9ugf6eMIGFBggrBgEFBQcBAQR5MHcwOwYIKwYBBQUH
MAKGL2h0dHA6Ly9jYWNlcnQuYWN0YWxpcy5pdC9jZXJ0cy9hY3RhbGlzLWVpZGFzLWcxMDgGCCsG
AQUFBzABhixodHRwOi8vb2NzcDA4LmFjdGFsaXMuaXQvdmEvYWN0YWxpcy1laWRhcy1nMTAaBgNV
HRIEEzARgQ9pbmZvQGFjdGFsaXMuaXQwggEnBgNVHSAEggEeMIIBGjAJBgcEAIvsQAECMIIBAwYG
K4EfCgIBMIH4MEQGCCsGAQUFBwIBFjhodHRwczovL3d3dy5hY3RhbGlzLml0L3JlcG9zaXRvcnkv
YWN0YWxpcy1xdWFsaWYtY3BzLnBkZjCBrwYIKwYBBQUHAgIwgaIMgZ9JbCBwcmVzZW50ZSBjZXJ0
aWZpY2F0byDDqCB2YWxpZG8gc29sbyBwZXIgZmlybWUgYXBwb3N0ZSBjb24gcHJvY2VkdXJhIGF1
dG9tYXRpY2EuIFRoZSBjZXJ0aWZpY2F0ZSBtYXkgb25seSBiZSB1c2VkIGZvciB1bmF0dGVuZGVk
L2F1dG9tYXRpYyBkaWdpdGFsIHNpZ25hdHVyZS4wBgYEK0wQBjCBxQYIKwYBBQUHAQMEgbgwgbUw
CAYGBACORgEBMAsGBgQAjkYBAwIBFDAIBgYEAI5GAQQwgZEGBgQAjkYBBTCBhjBBFjtodHRwczov
L3d3dy5hY3RhbGlzLml0L3JlcG9zaXRvcnkvYWN0YWxpcy1xdWFsaWYtcGRzLWl0LnBkZhMCaXQw
QRY7aHR0cHM6Ly93d3cuYWN0YWxpcy5pdC9yZXBvc2l0b3J5L2FjdGFsaXMtcXVhbGlmLXBkcy1l
bi5wZGYTAmVuMEAGA1UdHwQ5MDcwNaAzoDGGL2h0dHA6Ly9jcmwwOC5hY3RhbGlzLml0L3ZhL2Fj
dGFsaXMtZWlkYXMtZzEvY3JsMB0GA1UdDgQWBBRZZGNcU5zyPsnmLlbVZaXk/fa6xTAOBgNVHQ8B
Af8EBAMCBkAwDQYJKoZIhvcNAQELBQADggIBADavhrIURuiRDIK6kG/KU6kW+5U77oYuLY6huQrJ
i5bo/lhQMtg58Ruz5q08dPzXFmmdwaii9VMs1t00L5TtgigGbhHYdZQBIu1cMMv8Fr3ClE/euD/o
F70u9rHxb5vVzg/b0OeHcWKFAx25aXAk5cz7aZ5Gz4fFOyfcEunxXyIzD+KxbtK0cGMEKpMOhJ8k
CWT/LX+1Yj9U/eJxSfz/a9BVZd9Xxl2k/xRJv23aFDPHCZJgQJDpnxkRTNGGlGsccVJx0HBhxnpp
dsW4LR9w6IOPaCksevj3ILes6g0he99f/Q/Svma/RMOBnApyZLifkGJky9bvbN2LBdMOXNDkUrgN
gnWmrqCpLintLrWWMgpJUcn9iEY+wv3Y1bln6EG5JiO/4pX2OGdiCqhiESv1yL4Y0Oxa/SxTRzfC
X/0XYs+p2lnp/Y1zf10C4bx8S5kOjt8pQdYQfkJiW+A4NcE2XhcJKQdlTifJ2yWZQYhB+q08RZ/h
OFyG2qw4Qq+O/d7JdLsrnb7aXOqJcI/zrL+rEM5gAA7tah4u5oqCjXYRvJmmU+skVtybnDNVS6CF
7OoKyXF2eP/1B0bOkeftiGcgVmRTsNxvXWPI0cSXn/5n7G99Wwtd5OsnfNkTVj43Aiipus2RK4sY
zX2J6f5eN31qSi9Y7gsz9xpGYqToXItJrKOZ
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<ds:Object>
	<xades:QualifyingProperties xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Target="#Signer-T-1637750714326" xsi:schemaLocation="http://uri.etsi.org/01903/v1.3.2# http://uri.etsi.org/01903/v1.3.2/XAdES.xsd">
		<xades:SignedProperties Id="SignedProperties-Signer-T-1637750714326">
				<xades:SignedSignatureProperties>
					<xades:SigningTime>2021-11-24T11:45:14+01:00</xades:SigningTime>
					<xades:SigningCertificate>
						<xades:Cert>
							<xades:CertDigest>
								<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></ds:DigestMethod>
								<ds:DigestValue>IoIkX3OHWJUoDMD8M87naz64vUG2U70RJCwhHXo7l9k=</ds:DigestValue>
							</xades:CertDigest>
							<xades:IssuerSerial>
								<ds:X509IssuerName>CN=Actalis EU Qualified Certificates CA G1, OU=Qualified Trust Service Provider, OID.2.5.4.97=VATIT-03358520967, O=Actalis S.p.A., L=Ponte San Pietro, C=IT</ds:X509IssuerName>
								<ds:X509SerialNumber>140263991475735578404879982551133220062</ds:X509SerialNumber>
							</xades:IssuerSerial>
						</xades:Cert>
					</xades:SigningCertificate>
				</xades:SignedSignatureProperties>
			</xades:SignedProperties>
	</xades:QualifyingProperties>
</ds:Object>
</ds:Signature>
</DE815>

E’ completamente diverso, questo include anche il certificato criptato. Evidentemente Aruba, tramite la sua app, non firma in questo modo, quindi le Dogane lo scartano in automatico. Dovresti cercare di trovare un modo, mediante programmi esterni, di firmare l’XML in modo da avere un file simile a quello appena postato.

Altre idee? COme poter implementare la cosa

Dovresti indicare che linguaggio usi per sviluppare la tua applicazione, come è strutturata (in grandi linee ovviamente) o come pensi di procedere…

C#. tramite visual studio. Creo XML allo stato attuale tramite il mio gestionale ma lo invio tramite J-DAS. Vorrei saltare quest’ultima parte. E quindi fare FIRMA, INVIO e Recupero ESITO. A fare l’invio e il recupero esito in se e per se non ho nessun problema utilizzando anche il vostro codice e riadattandolo ai miei codici. Naturalmente ho il problema della firma tramite ARUBA KEY. Quest’ultima funziona firmando il file prima di darlo a J-DAS.

Personalmente le ho provate tutte quando ho sviluppato la mia applicazione, ma ci sono riuscito solo con la libreria esterna CHILKAT. Vale tutti i soldi spesi, con quella e con una riga di codice ho risolto il problema. Tra l’altro ho anche perfezionato la firma, che con alcuni token andava a selezionare il certificato di identità anzichè quello di firma ed ovviamente dava errore. Sempre grazie a quella libreria è possibile effettuare la scelta del certificato giusto e firmare.

Ci sono anche delle soluzioni indicate da Microsoft o mediante dei NuGet gratuiti (tipo FirmaXadesNet), ma personalmente non sono riuscito a farli funzionare…

Buongiorno a tutti, sapete se e dove è disponibile uno schema xsd relativo all’elemento <data> (xml codificato in base64)?

Salve a tutti,
attualmente sto avendo problemi ad accedere al portale ADM tramite CNS con certificato livello 3 (tutti i certificati nuovi saranno di livello 3). Avete riscontrato anche voi questa problematica o è un problema della tessera (normale CNS rilasciata da InfoCert)? Firma ed invio dell’eDAS/XML sono ok, ma se provo ad accedere al portale via browser (vari) mi risponde sempre PR_END_OF_FILE_ERROR (FireFox) o ERR_SSL_CLIENT_AUTH_SIGNATURE_FAILED (chrome/edge).

Ciao a tutti, il mio problema non riguarda direttamente il DAS elettronico ma utilizzo questa discussione perchè ho trovato molti spunti importanti finora.
Nello specifico sto cercando di utilizzare i web services per la “gestione documenti - dichiarazioni doganali”.
Nel portale online dell’ADM ho abilitato l’utente alla gestione delle dichiarazioni doganali e ho scaricato il certificato con estensione .p12.
Seguendo gli xsd ho generato l’xml per poter eseguire la richiesta. In particolare nel tag ho inserito un altro xml, specifico per la richiesta, firmato tramite Infocert e codificato in base64.
Sto eseguendo chiamate verso l’endpoint in ambiente reale tramite SoapUI ma ricevo il seguente errore:
ns2:codice4</ns2:codice>
ns2:messaggioLa verifica dell’integrita’ del messaggio e’ fallita</ns2:messaggio>

Qualcuno saprebbe aiutarmi per sapere nello specifico cosa sto sbagliando?

Grazie.

In base al dpcm 22/02/2013 il file XML che invii deve essere firmato in xades. Il p12 eventualmente ti serve come certificato per la trasmissione e NON per firmare il file XML,il quale va firmato in xades con un certificato almeno di livello 2. In pratica certificato fisico su smart card (o chiavetta) tipo CNS.

Che lei sappia, l’operazione di firma xades tramite certificato di livello 2 può essere “automatizzato” nel client tramite codice (php per esempio) oppure deve essere eseguita ad ogni richiesta manualmente?

Grazie.

Non credo esista una soluzione per automatizzare la firma tramite php. Il certificato è nella smar card (o USB) e non può essere esportato. Devi leggere direttamente il certificato.

Ad ogni modo la firma dell’xml può essere eseguita anche tramite la firma remota con il codice OTP visto che dovrebbe avere lo stesso valore, e quindi lo stesso livello di sicurezza, della firma ottenuta tramite CNS.

Comunque ad un certo punto nella documentazione ufficiale riportano le istruzioni per scaricare, dall’area personale del loro sito online, un certificato, tramite OpenSSL per esempio.
Per cosa potrebbe essere utile quel certificato?

Normalmente le dogane vogliono un certificato per la trasmissione (diverso se in prova o ambiente reale) ed un certificato per la firma del XML (diverso dal precedente in quanto il certificato di trasmissione è un semplice p12 mentre il certificato di firma deve essere di livello (o superiore) e il file XML va firmato Xades embedded).
I certificati di trasmissione vengono realizzati attraverso uno scambio di chiavi con il sistema delle dogane (in pratica ti generi una chiave - suggerimento: usa XCA e non openssl - generi una request, carichi la request sul portale e se tutto va bene ottieni un certificato che trasformerai in p12).
I certificati di trasmissione servono alle dogane per certificare che chi invia il file abbia le necessarie autorizzazioni (esplicite o su mandato - spesso si utilizzano i dati del gestore delegato per generare questi certificati, presupponendo comunque che al gestore delegato siano state attribuite le necessarie autorizzazioni)

Il certificato .p12 l’ho generato tramite XCA, come consigliato. Siccome sto tentando di fare una prima chiamata di prova tramite SoapUI, ho caricato questo certificato di trasmissione .p12 con la relativa password nelle impostazioni SSL.
Dopodichè ho fatto firmare l’xml tramite firma remota con InfoCert, l’ho codificato in base64 e l’ho inserito nel tag del messaggio SOAP.

L’errore che ricevo però è sempre “La verifica dell’integrita’ del messaggio e’ fallita”.
Da cosa potrebbe dipendere:

  • La codifica in base64 potrebbe compromettere l’integrità della firma digitale?
  • Oppure insieme alla richiesta SOAP devo allegare anche la chiave pubblica con cui è stato firmato l’xml? Se sì, come potrei allegarlo?

Grazie.