menu di navigazione del network

Collegamento ai WS e certificati


(Alessandro) #1

Salve a tutti,
abbiamo terminato correttamente la procedura di accreditamento e abbiamo ricevuto da SDI i vari certificati. Sto provando a collegarmi, da un’applicazione .NET, ai web service di test (“https://testservizi.fatturapa.it/ricevi_file”), ma non riesco a fare la chiamata. Ottengo sempre un 403 Forbidden.
Come prova ulteriore volevo provare a collegarmi tramite browser. Ho installato i vari certificati. Quando mi collego da Chrome o IE, mi viene richiesto il certificato da usare e dopo la selezione ottengo un 403 - Authentication Failed.
A qualcuno è capitata una cosa simile? Sto sbagliando qualcosa o è un problema lato Sdi?

Grazie,
Alessandro


Accreditamento SDICoop: configurazione SSL su Apache
(Giulio) #2

Ciao,
mi trovo nella tua stessa situazione, ricevuto il kitditest e non riesco a chiamare i web service.
Sto usando .net (vb.net) e provato sia dalla macchina di sviluppo sia da applicazione web installata sul server (windows) che ospita i nostri web services.
Anche da browser stesso errore.
Ho provato a seguire le istruzioni indicate da altro utente qui:

ma niente, se vedi nellla discussione ci sono gli errori che ricevo e anche le prove con openssl.
Ho già contattato l’assistenza sogei e niente mi dicono che è un problema dal nostro lato quindi di arrangiarsi.
Rimaniamo in contatto qui se ci sono sviluppi

Un saluto e buona fortuna
Giulio


TEMPI DI RISPOSTA alla richiesta di accreditamento del canale
(Alessandro) #3

Ciao,
si ho visto tutte le varie discussioni, ho provato a seguire tutte le istruzioni per combinare i certificati, installarli nel browser, o nella macchina etc, etc, ma non ho ottenuto nessun risultato.
Ho fatto anche io le prove con openssl e anche io ottengo quel messaggio di errore “error 19 self signed certificate in certificare chain”.
Io ancora non ho contattato l’assistenza Sogei, pensavo di farlo lunedì, ma se questa è l’assistenza che danno……

Se ottengo qualche passo avanti ti faccio sapere.
Intanto grazie.
Alessandro


(Giulio) #4

Su altro forum, mi hanno consigliato di fare un test di collegamento con soapui.
L’ho installato ma non lo conosco se ho aggiornamenti scrivo qui.

Sull’assistenza, velo pietoso, dopo vari solleciti, mi inviano email dicendo che hanno provato a telefonarmi alle 19.20 ma non hanno trovato nessuno e di arrangiarmi. Nella stessa email erano indicati gli orari del nostro ufficio 9-13 13.30-17.30 che mi avevano chiesto alla prima telefonata…

In ogni caso, sto provando a richiedere aiuto anche su altri forum ma questo mi sembra il più “sul pezzo” e molto attivo, confido di trovare lo spunto che ci sblocca.

Giulio


(Giulio) #5

Ciao Alessandro,
come ho scritto sull’altro post Accreditamento SDICoop tramite web services

Da questa mattina da browser ottengo risposta corretta e non più 403.
Ma da codice sempre errore:

Could not establish trust relationship for the SSL/TLS secure channel with authority ‘testservizi.fatturapa.it’

Quindi qualcosa è stato sbloccato dal lato sogei, adesso ricontrolliamo il nostro codice, se hai novità fammi sapere.


(Alessandro) #6

Ciao Giulio,
io ho ancora lo stesso problema. Dall’assistenza ancora mi devono richiamare (sono solo passati 3 giorni). Ho sempre più il sospetto che sia un problema loro e che non abbiano registrato/configurato il nostro certificato sui server.
Non so se hai visto questo post:

https://social.msdn.microsoft.com/Forums/sqlserver/it-IT/d8fa8049-d8e9-4422-a069-8a7da4090f9e/problemi-di-autenticazione-su-un-web-service-non-dotnet-che-utilizza-il-protocollo-https-e?forum=wcfwfit

Ci sono esempi di codice per la chiamata ai web service Sogei. Purtroppo io ottengo sempre il 403, ma penso che fino a che da browser non otterrò risposta positiva, non ci sia niente da fare.


(Giulio) #7

Ciao,
ti consiglio di richiamare l’assistenza e spiegare il problema che non ti funziona neanche da browser.
Oggi per fare una prova ripartendo da zero ho eliminato tutti i certificati sia da store personale che da store computer (c’era un po’ di casino, con tutte le prove).
E confermo che da browser funziona importando il certificato sdi-[partitaiva].pfx (ottenuto con la guida di Dario) nello store personale. Con il certificato sdi-[partitaiva].cer non funziona.
Da codice ottengo sempre solito errore, ma ho fatto una prova a chiamare l’endpoint di produzione https://servizi.fatturapa.it/ricevi_file e funziona correttamente, nel senso che non mi viene errore

Could not establish trust relationship for the SSL/TLS

ma il web service risponde con errore EI03 che da documentazione significa “utente non abilitato” e ci sta perchè non avendo passato tutti i test non sono abilitato, ma almeno ho una risposta e non un erroraccio da codice.

Ho appena risentito l’assistenza e spiegato tutto, hanno aperto un altro ticket, attendo.


(Giulio) #8

Scusa non ho risposto al tuo messaggio precedente, si ho visto il link di msdn, direi che come codice ci sono, adesso uso:

Dim newEP As ServiceModel.EndpointAddress
newEP = New ServiceModel.EndpointAddress(“https://testservizi.fatturapa.it/ricevi_file”)

Dim newBind As New ServiceModel.BasicHttpsBinding
newBind.Security.Mode = ServiceModel.BasicHttpSecurityMode.Transport
newBind.Security.Transport.ClientCredentialType = ServiceModel.HttpClientCredentialType.Certificate
newBind.MessageEncoding = ServiceModel.WSMessageEncoding.Mtom
Dim sdiws As New SDI.SdIRiceviFileClient(newBind, newEP)

Net.ServicePointManager.SecurityProtocol = CType(3072, Net.SecurityProtocolType)

Dim certPath = “[PERCORSO_CERTIFICATO]\SDI-[PARTITAIVA]-client.pfx”
Dim ccert = New System.Security.Cryptography.X509Certificates.X509Certificate2(certPath, “[PASSWORD]”)

sdiws.ClientCredentials.ClientCertificate.Certificate = ccert
sdiresponse = sdiws.RiceviFile(filefe)

e come dicevo prima chiamando endpoint servizi.fatturapa.it, ottengo risposta


(Giulio) #9

Aggiornamento, ho fatto un passo in avanti, risolto errore “Could not establish trust relationship for the SSL/TLS” su testservizi.

ho aggiunto:

Net.ServicePointManager.ServerCertificateValidationCallback = AddressOf ValidateCallback

e relativa funzione:

Function ValidateCallback(sender As Object, certificate As System.Security.Cryptography.X509Certificates.X509Certificate, _
chain As System.Security.Cryptography.X509Certificates.X509Chain, sslPolicyErrors As System.Net.Security.SslPolicyErrors)
Return True
End Function

in pratica ignora gli errori certificati del server remoto, in effetti quando passa dalla callback SslPolicyErrors = 4 (RemoteCertificateChainErrors)

Adesso il ws risponde “EI01 = file allegato vuoto”
devo capire perchè ma è già un notevole passo in avanti.

Dai che ci siamo


(Alessandro) #10

FInalmente anche il mio problema di certificati sembra essere risolto. Lato browser funziona tutto correttamente.
Adesso il mio problema è lato codice. Se provo ad usare il codice che avevo ottengo un internal error. Se uso quello che hai postato tu, ottengo questo:

The username is not provided. Specify username in ClientCredentials.

Sto usando gli stessi certificati che funzionano lato browser quindi non capisco il problema.
Hai avuto gli stessi problemi?


(Giulio) #11

Ciao,
ops mi sono accorto di un errore nel codice postato, sostituisci questo:

Dim newBind As New ServiceModel.BasicHttpsBinding

con questo:

Dim newBind As New ServiceModel.BasicHttpBinding

ho fatto copia incolla da una versione che non funzionava, si mi veniva quell’errore.

Fammi sapere
Adesso sono fermo sulla ricezione delle notifiche sul web service TrasmissioneFatture, però qualche passo l’ho fatto, mando il file (che viene ricevuto) e riesco a fare le prove con file firmato e il file passa la conferma e viene inviato via pec al destinatario


(Alessandro) #12

Si adesso funziona grazie!
Ottengo però l’altro errore che avevi anche tu EI01 = file allegato vuoto.
Però sto usando un file firmato e convertito in base64. Provo a fare altri test


(Giulio) #13

Anche a me esce EI=01
Guarda sui sito fatturapa nella gestione del canale se nei testi di interoperabilità vedi i file che invii.
Secondo me rende l’errore perche non riesce a mandare le notifiche o perchè ti scarta il file


(Alessandro) #14

Si sto monitorando, ma non vedo niente. Tu invece vedi i file che mandi sul sito? Adesso ricontrollo l’XML


(Giulio) #15

si li vedo.
per mandare il file uso:

       Dim febyte As Byte()
        Dim str64 As String
    Dim sdirequest As New SDI.RiceviFileRequest
        febyte = IO.File.ReadAllBytes(basePath & "\" & tb_fattura.Text)
        sdirequest.fileSdIAccoglienza = New SDI.fileSdIBase_Type
        sdirequest.fileSdIAccoglienza.NomeFile = IO.Path.GetFileName(basePath & "\" & tb_fattura.Text)
        str64 = Convert.ToBase64String(febyte)
        sdirequest.fileSdIAccoglienza.File = Convert.FromBase64String(str64)

(Alessandro) #16

Si anche io uso codice identico, ma niente.
Usi file firmati giusto?


(Alessandro) #17

Ci sono riuscito. Era un errore sul file della fattura. Adesso la vedo online, ma credo ci siano problemi con la ricevuta che non viene spedita indietro


(Alessandro) #18

Io ottengo sempre l’errore:

javax.net.ssl.SSLHandshakeException: General SSLEngine problem

Voi ce l’avete? Credo sia un problema di configurazione del nostro IIS e dei certificati. Chiaramente non ci sono altri dettagli e non si capisce quale sia il problema…


(Giulio) #19

Avevo anche io quell’ errore.
Ho risolto installando il certificato sdi-partitaiva-server.pfx sul sito dove c’è il ws trammissionefatture.
Adesso ho altro errore, ho già sentito l’assistenza sono in attesa.


(Alessandro) #20

Ciao.
dall’assistenza dicono che è un problema nostro e che non possono darci supporto… Voi usate IIS giusto? A noi hanno detto che il browser, quando andiamo sul nostro web service, deve chiedere il certificato, come fa quello di Sdi. Da voi accade questo?
Non sono esperto a livello sistemistico, se ne è occupato un mio collega, ma da noi non chiede niente. E’ configurato in anonimo e il mio collega ha configurato SSL con il certificato che ci ha inviato SDI.
Voi avete fatto qualche configurazione particolare?