11.886 messaggi dal 09 febbraio 2002
Contributi
io ho una chiavetta infocert del mio cliente

Non ho idea di come sia fatta una chiavetta InfoCert ma penso ci sia un modo per estrarre il certificato da lì. Questa per esempio è una guida per estrarla dalla Carta Nazionale dei Servizi.
https://www.ipzs.it/docs/public/cnac/Esportazione%20Certificati%20CNS.pdf


Sulle specifiche dell'agenzia delle entrate richiedono una di queste due firme

Sì, il link che ti ho mandato serve appunto a produrre una firma di tipo CAdES-BES, cioè un file con estensione .xml.p7m.

Comunque, io non ho affrontato il problema della fattura digitale quindi non ti so dare garanzia che tutto questo funzioni, specie in hosting condiviso. Devi provare.

ciao,
Moreno

Enjoy learning and just keep making
277 messaggi dal 03 ottobre 2006
Sto provando almeno ad usare questo
https://github.com/FatturaElettronica/FatturaElettronica.NET
ma non riesco nemmeno ad installarlo come pacchetto NuGet
vedo che è per net.framework 1.1 ma io uso visualstudio 2017 + Windows 10 dove il net framework 1.1 non c'è.
Può essere questo un problema?
Se apro visualstudio e creo un nuovo progetto di che tipo dovrei farlo per poi installarci il pacchetto della fatturazione elettronica?
Poi penso di dover aggiungere un altro progetto di tipo web application dove poter mettere una paginetta di test che mi apre il file xml e lo firma... ma è una strada sbagliata?

Io ho il file pfx estratto con le istruzioni che mi hai inviato dall chiaveyya infocert con tanto di password, ho pronto anche il file Xml ma possibile sia così difficile solo "firmarlo" per produrre un file CAdES-BES o XAdES-BES ?
277 messaggi dal 03 ottobre 2006
Penso di aver fatto un passo avanti
Ho trovato dei pezzi di codice con i quali sono riuscito a firmare il file xml sia in modalità CADES che XADES, se a qualcuno interessano posso girarli.
Questi pezzi di codice utilizzano o la librerie BouncyCastle.Cripto o System.Security.Cryptography.Pkcs
Il file generato in CADES ha l'estensione p7m e riesco anche a rileggerne il contenuto con un altro pezzo di codice mentre quello XADES è ancora più comodo perchè resta in formato xml ed è perfettamente apribile come quello non firmato.
Il problema è che passando entrambi i file su questo interessantissimo sito https://vol.andxor.it/vol/verificato.jsp
mi boccia entrambi i file firmati se scelgo nel menù che propone il sito web: "Tipo di firma" firma qualificata" mentre me li approva se nello stesso menù scelgo "Tipo di firma" firma elettronica avanzata"
Il motivo per cui me li boccia sembra essere la mancanza dell'informazione relativa all'ente certificatore e chi è il proprietario della firma, ma questo vuol dire che il file pfx che ho esportato andrebbe esportato meglio ?
Per la cronaca la prima fattura che ho provato ad inviare come xml puro, ovvero senza firma, mi è stata scartata dall'SDI dell'agenzia delle entrate per mancanza di firma (l'avevo mandato via PEC) così ora gli ho mandato questo firmato e sto attendendo risposta ma temo la scarteranno ancora stavolta per mancanza di una firma autenticata come vogliono loro.
Mi sembra di essere però vicino alla soluzione, purchè qualcuno abbia qualche dritta su come esportare correttamente in pfx il certificato della chiavetta Infocert
grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Prova a chiedere a InfoCert come estrarre il pfx contenente sia chiave pubblica che chiave privata.


Ho trovato dei pezzi di codice

Prova con il codice che ti ho linkato, che è configurato appositamente per firmare file xml della fattura elettronica. Anche lui usa BouncyCastle e Pkcs.
https://github.com/FatturaElettronica/FatturaElettronica.Extensions/blob/78c14463a6e6018abaa5e3a8abc9fbca182175be/FatturaElettronica.Extensions/FatturaElettronicaSignedFileExtension.cs#L62


Sto provando almeno ad usare questo
https://github.com/FatturaElettronica/FatturaElettronica.NET

Dato che ormai hai già prodotto il tuo file XML, il pacchetto non ti serve. Devi giusto copiarti il codice che ti ho linkato sopra e adattarlo alla tua applicazione.
Comunque il pacchetto non è per il framework 1.1. E' per .NET Standard 1.1, infatti come vedi in questa tabella, lo puoi referenziare da applicazioni che sfruttano il .NET Framework 4.5 o successivo.

ciao,
Moreno

Enjoy learning and just keep making
277 messaggi dal 03 ottobre 2006
Grazie Moreno
direi allora di scartare per ora la soluzione
https://github.com/FatturaElettronica/FatturaElettronica.NET
dato che sono riscito a firmare con altro codice e mi concentro su questo link che mi hai mandato:
https://github.com/FatturaElettronica/FatturaElettronica.Extensions/blob/78c14463a6e6018abaa5e3a8abc9fbca182175be/FatturaElettronica.Extensions/FatturaElettronicaSignedFileExtension.cs#L62

Però ho una novità... ho appena inviato il file firmato con il mio codice e me l'hanno scartato di nuovo ma stavolta non perchè manca la firma, ne perchè non è chiaro chi sia l'ente certificatore, bensì solo perchè manca la data! o la marca temporale....
Magari quindi la soluzione è ancora più semplice...sai come si può marcare il file ?
277 messaggi dal 03 ottobre 2006
Scusa ma il link nuovo che mi hai passato è lo stesso che mi avevi già inviato e che si appoggia al progetto FattureElettroniche o sbaglio ?
Questo non riesco ad usarlo perchè mi genera conflitti ovunque anche se probabilmente sono io che non so come crearlo correttamente in visual studio

Mi resta la speranza di trovare come apporre una marca temporale aggiungendo qualcosa a questo codice che ho trovato e che mi firma almeno il file ?

CmsSigner cms = new CmsSigner(new X509Certificate2(percorso pfx, password));

ContentInfo ci = new ContentInfo(File.ReadAllBytes(percorso file xml));
SignedCms cmssigned = new SignedCms(ci);
cmssigned.ComputeSignature(cms);
byte[] encodedmessage = cmssigned.Encode();

File.WriteAllBytes(percorso file di uscita con estensione p7m, encodedmessage);
11.886 messaggi dal 09 febbraio 2002
Contributi

Scusa ma il link nuovo che mi hai passato è lo stesso che mi avevi già inviato

E certo, tu l'hai ignorato e quindi te l'ho riproposto.


Questo non riesco ad usarlo perchè mi genera conflitti ovunque

Può darsi che fallisca la compilazione perché manca il riferimento a BouncyCastle o quale altra libreria referenziata dal progetto. Posta il testo degli errori. Comunque devi capire l'intento di quel metodo, non è che può funzionare solo copiando e incollando.


Mi resta la speranza di trovare come apporre una marca temporale

La marca temporale non puoi apporla tu ma deve apposta da un'ente certificatore come InfoCert. Bisogna acquistare dei pacchetti perché sono a pagamento. Sei sicuro che richieda la marca temporale? Puoi postare il link un cui è scritto?


ciao,
Moreno

Enjoy learning and just keep making
277 messaggi dal 03 ottobre 2006
Dunque, partendo dal fondo:
questo è l'errore che mi aveva mandato come risposta l'SDI
<ListaErrori>
<Errore>
<Codice>00103</Codice>
<Descrizione>La firma digitale apposta manca del riferimento temporale</Descrizione>
</Errore>
</ListaErrori>
ma poi, guardando meglio come è fatto il file firmato, mi sono accorto che non intendono una "marca temporale" che come dici tu è una cosa che si compra, bensì mancava semplicemente la data nel documento firmato.
L'ho aggiunta con questa riga di codice...
cms.SignedAttributes.Add(new Pkcs9SigningTime(System.DateTime.Now));

ma poi hanno scartato di nuovo il documento perchè stavolta dicono che non proviene da un certificatore valido.
e qui è caduto tutto il palco perchè mi sono accorto che il file firmato attraverso il mio codice, non solo non conteneva riferimenti della data ma nemmeno informazioni sull'ente certificatore (infocert) ne del titolare del certificato. E tutto questo perchè, seguendo le istruzioni per estrarre il file pfx avevo sbagliato immagino a scegliere il certificato dato che come ente certificatore mi viene "Localhost"
Allora ho chiamato il signor Infocert e mi hanno guidato nella procedura per estrarre il certificato in formato pfx. Peccato che arrivati sulla pagina dove si può esportare, il formato pfx non è selezionabile :-(
L'operatore telefonico sembrava sorpreso quanto me, e mi ha detto che si informava del perchè non fosse esportabile e mi avrebbe risposto tramite email.

Dato che dubito risponderanno, o che mi darà una soluzione, sai per caso quale altro fornitore di chiavette è in grado di farmi esportare il certificato in pfx ? (altrimenti sono nei guai)

Per quanto riguarda il link del codice che mi suggerivi, non l'ho ignorato, figurati... solo che fin dall'inizio ho provato a creare tutto il progetto e non solo a sfruttare le righe di codice necessarie, e questo mi portava fin troppi conflitti al punto che temevo di non essere in grado di crearlo. Comunque se mi confermi ora non serve più perchè il problema è nel certificato stesso non esportabile... hai qualche dritta per riuscirci ? L'operatore non sembrava molto ferrato in materia...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.