Sono nuovo sul forum, ma grazie ai vostri post sono riuscito a impostare la comunicazione con l’interscambio, purtroppo riesco a inviare le fatture, ma non riesco a ricevere le notifiche dall’interscambio, che mi restituisce questo errore.
Lavoro con php, e abbiamo impostato un soapServer all’indirizzo di endpoint. Il server é windows, abbiamo importato il certificato server e impostato come certificato ssl del bindings.
Abbiamo importato i certificati CAentrate e CAentrateTest come certificati di root attendibili e i certificati testservizi.fatturapa.it e servizi.fatturapa.it come certificati intermedi.
provando a raggiungere il SoapServer da un file di test il server riceve le richieste.
Qualcuno di voi ha una struttura simile ed é riuscito a risolvere? grazie in anticipo a tutti
Abilita solo un ManyToOne
metti un nome che vuoi univoco (perchè ad esempio potresti avere altri certificati client sulla stessa macchina)
metti una descrizione
user/password di un utente windows che ha i permessi di lettura sul certificato client SDI-PIVA (i permessi li dai nella gestione certificati di windows (tasto dx sul certificato cliente->all tasks -gestisci chiavi private…)
-permission mode allows
poi in rules aggiungi
certificate field : subject
certificatesubfield: CN
match criteria : SDI-yourpartitaiva
comparecasesensitive: true
Chiudi le maschere e dai l’apply finale per memorizzare le modifiche Queste impostazione sono valide se vuoi mappare un utente windows mappato con il certificato presentato da sdi (esempio se non state usando l’utente pool della tua web app per scrivere in file system ma l’utente mappato)
ma dalla gestione certificati i certificati SDI(client/server) li vedi trustati con quelli della ca delle entrate ?
-Installa i pfx (server/client), sistema di interscambio, test in personal
-in radici attendibili la CA e la CA test che sono quelle che trustano tutte quelle in personal
-in iis binda solo https l’sdi_server
-metti in impostazione ssl : flag richiedi ssl e richiedi
Sistema di interscambio test e sistema di interscambio li ho caricati come certificati intermedi, faccio subito questa modifica, ti faccio sapere, grazie mille
come se non il webservice non implementasse la notifica, a questo punto in teoria il server é raggiunto, si tratta di andare a verificare la correttezza del codice?
Anche dopo aver spostato i certificati(di cui vedo la catena Caentrate->SDI-PIVA) chiamando openssl s_client -connect ottengo lo stesso errore 20/21 unable to identify local issuer
il 405 fa riferimento all’RFC 2616 quindi sembra che tu non stia implementando il verbo corretto nel ws. Normalmente la causa di questo errore è dovuta al fatto che ci sono più gestori delle stesso verbo/metodo e uno dei gestori sta bloccando il gestore previsto per la gestione della richiesta.
Abilita il trace di IIS così verifichi qual’è il gestore che sta creando problemi. Nell’IISClient Mapping configurato hai un solo nome univoco (il campo name quello con la ‘chiave’) ? Verifica da iis nell’ iis mapping client con il pulsante search configuration (verifica i web.config e applicationhost.config)
Ciao a tutti.
Condivido anch’io lo stesso problema del codice di errore 20 e 21 e questo nonostante abbia eseguito tutti i passi consigliati da Pipino.
Il mio WS gira su IIS 10 e Windows server 2016.
Da quanto ho visto in giro sembra che nella risposta data al client non venga fornita la “certificate chain” completa al client, il quale non fa (come tipicamente fanno i browser) il certificate discovery.
Infatti: facendo il test openssl s_client con il server testservizi.fatturapa.it la chain in risposta è completa:
finalmente sono riuscito a ottenere la mia notifica, il problema era come dicevi tu, un conflitto con un web.config che non vedevo dall’editor di configurazione, ma che ho trovato spulciando nel file
Grazie mille
Ciao Lorenzo grazie della risposta.
Dal momento che a te adesso funziona ti dispiacerebbe dirmi se openssl s_client continua a darti l’errore 20 e 21?
A me da sia l’errore 20 e 21 che errore alla ricezione dell’esito di trasmissione.
Il certificato server (con la chiave) utilizzato per il binding al sito l’ho generato da IIS cliccando su Certificati > Completa richiesta di certificato e dandogli in pasto il certificato server (.cer) che mi ha inviato la SOGEI.
Lorenzo, hai fatto nessuna particolare configurazione a IIS o al sistema operativo?
Lorenzo purtroppo non funziona a sto punto mi viene da chiedere se il certificato che ho a disposizione è corretto e pertanto ti chiedo:
quale procedura (su windows) hai seguito dal momento della generazione del CSR al binding con il sito?
Hai per esempio combinato la CAentrate con CAentrateTest?
In sinstesi: come hai elaborato i certificati ricevuti da SOGEI nel KitdiTest?
Ciao Giuseppe, ho generato i csr tramite iis, e completato la certificazione sempre tramite iis.
Per l invio della fattura poi ho estratto la chiave privata tramite openssl, mentre per quanto riguarda il certificato server non fatto nulla se non fare il binding del ssl.
CAentrate e CaentrateTest li ho messi come root attendibili e ho controllato che tutti i certificati personal fossero trustati da CAentrate
E’ esattamente ciò che ho fatto io.
Tuttavia ho notato che il certificato server che mi hanno rilasciato è firmato da CA Agenzia delle Entrate e non da CA Ag. delle entrate di TEST, per cui mi viene il dubbio che il client con cui provano ad inviarmi l’esito abbia solo la CA delle agenzie delle entrate TEST nel suo repository e non riesce a validare il mio certificato server.
E’ curioso notare che se provo ad eseguire il comando di test openssl specificando la CA da usare la connessione va benone!