Accreditamento SDICoop: configurazione SSL su Apache

per eliminare ogni possibile mismatch ti consiglio di rinominare la tua cartella TrasmissioneFatture in Trasmissione; quindi in htaccess devi avere qualcosa del genere:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^soap/TrasmissioneFatture soap/Trasmissione/index.php

leva il flag [R] perché identifica un redirect (che non deve esserci: deve essere solo un rewrite, trasparente per chi chiama, ovvero l’url non cambia chiamando lo scripts).
La verifica la puoi fare facendo stampare qualcosa a schermo dal tuo file index.
La stessa cosa devi fare per il tuo endpoint in ricezione: aggiungi a seguire un’altra direttiva Rewrite analoga

Che dirti Antonio … ti ringrazio immensamente perchè ora funziona perfettamente !!! :wink:

Grazie mille!

Ciao a me da Scarto: EN01 (NOTIFICA NON AMMISSIBILE) e mi pare tutto corretto. Va mica firmato anche il file xml della notifica esito?

Da quello che ho visto vanno sempre firmati tutti i file che trasmetti, ad eccezione del file archivio ZIP.

Scusate … ma come avete fatto a farvi inviare delle fatture ?

Perchè io ho completato tutti i test ma non ho idea di come poter simulare la ricezione di fatture da esterni … qualcuno lo ha fatto ?

l’unica cosa che va firmata è la fattura verso pa.
non serve per le notifiche o altro.

leggete dall’inizio questo .

dovrebbe tornarvi utile.

Io ho inviato una fattura a uno dei 3 codici fornitomi. Risulta Non Esitata. Spedisco il file xml di notifica esito coi dati di quella fattura con questo wsdl https://testservizi.fatturapa.it/SdI2RicezioneNotificheWeb/SdIRiceviNotifica_service/WEB-INF/wsdl/SdIRiceviNotifica_v1.0.wsdl e questo endpoint https://testservizi.fatturapa.it/ricevi_notifica . I parametri che invio sono IdentificativoSdI, NomeFile e File l’operazione che chiamo è NotificaEsito. Dove sbaglio?

Dal simulatore notifiche me l’ha accettata e ho passato anche l’ultimo test anche se non capisco perchè da webservice mi dava sempre EN01

Scusami @walter, ma il simulatore dov’è ?
Oppure hai dovuto attivare la “Richiesta di Sperimentazione” ?

penso che la richiesta di sperimentazione serva solo se avevi già un canale attivo per l’invio della PA e chiedi di entrare in fase sviluppo per testare la parte B2B.

Penso che @walter si sia collegato con le credenziali aziendali e usato il pannello Simulazione presente su fatturapa.gov

dava un problema simile anche a me.
alla fine ho costruito un pannello per gestire le fatture ricevute con un sistema di accettazione e rifiuto.

mi sono inoltrato una serie di fatture e iniziato ad accettarle / rifiutarle entro 1 ora dalla ricezione.

inoltre avevo un errore sui dati. avevo inserito l’anno nel campo numero e il numero nel campo anno.

Scusate … nell’implementazione della risposta alla chiamata SOAP “RiceviFatture” io ho risposto con una semplice stringa …

_ function RiceviFatture($obj)
$array = get_object_vars($obj);

  .... 

 $risposta = "ER01";

 return $risposta;

_

Però il servizio del SdI identifica con un errore di consegna …

Potresti aiutarmi ?

Grazie mille.

… sorry … mi sono auto-risposto …

Buongiorno a tutti, dopo svariati tentativi sono riuscito ad inviare una fattura corretta a Sdi.
Ora però sono bloccato su un errore che avviene quando Sdi tenta di effettuare l’ “Invio fattura a Pubblica Amministrazione” della stessa fattura che ho inviato al mio WebService RicezioneFatture
L’errore riscontrato è il seguente:
The endpoint reference (EPR) for the Operation not found is myws/RicezioneFatture and the WSA Action = http://www.fatturapa.it/RicezioneFatture/RiceviFattureSdI 1. If this EPR was previously reachable, please contact the server administrator.

Ho creato il WS RicezioneFatture tramite il wsdl di Sdi con Eclipse (in Java).
Qualcuno ha idea di quale possa essere il problema?
Grazie in anticipo

Ciao,
per quanto riguarda l’integrazione io sono ancora bloccato sul lato client.
Stavo cercando di implementare un client utilizzando la classe PHP SoapClient (per ora non sto considerando la problematica MTOM).
In local_cert ho inserito il percorso del certificato PEM che caricato su un browser mi permette di accedere all’url https://testservizi.fatturapa.it/SdI2AccoglienzaWeb/SdIRiceviFile_service/WEB-INF/wsdl/SdIRiceviFile_v1.0.wsdl.
Purtroppo dal client PHP ottengo sempre l’errore:

[faultstring] => SOAP-ERROR: Parsing WSDL: Couldn’t load from ‘https://testservizi.fatturapa.it/SdI2AccoglienzaWeb/SdIRiceviFile_service/WEB-INF/wsdl/SdIRiceviFile_v1.0.wsdl’ : failed to load external entity “https://testservizi.fatturapa.it/SdI2AccoglienzaWeb/SdIRiceviFile_service/WEB-INF/wsdl/SdIRiceviFile_v1.0.wsdl

Se invece carico il WSDL direttamente dal path locale, ottengo l’errore generico:

Could not connect to host

Immagino possa trattarsi di un problema di authenticazione con certificati ma non riesco a capire di preciso dove sta il problema.
Potresti inviare una procedura precisa dalla ricezione dei certificati di test alla generazione dei certificati da utilizzare nel codice?
E’ possibile ottenere un estratto della vostra classe MTOMSoapClient?
Grazie mille.
Saluti.

1 Mi Piace

Ciao Oiram,

potresti indicare in che modo alleghi la fattura xml da inviare?
ti ringrazio in anticipo.

Ciao,
per quanto riguarda la generazione del certificato client ho utilizzato questi comandi:

  1. openssl x509 -inform der -in SDI-xxxxxxxxxxxClient.cer -out SDI-xxxxxxxxxxxClient.pem
  2. openssl pkcs12 -export -out client_test.p12 -inkey private.key -in SDI-xxxxxxxxxxxClient.pem -certfile CAEntratetest.cer
  3. openssl pkcs12 -in client_test.p12 -out SDI-xxxxxxxxxxxxxxxxxx-clientpfx.pem

Il certificato utilizzato dal client SOAP è SDI-xxxxxxxxxxxxxxxxxx-clientpfx.pem mentre private.key è la chiave generata durante la richiesta CSR.
Anche noi abbiamo avuto problemi a connetterci con il loro server per ottenere il wsdl. Dopo aver fatto una richiesta di assistenza sul sito fatturapa.gov.it, utilizzando il codice che ho postato in questo thread il 9 agosto, tutto è andato a posto.
Non so se loro abbiano effettuato qualche intervento prima di contattarci ma, quando ci hanno contattato, il nostro codice aveva già iniziato a funzionare.

Noi utilizziamo la classe MTOMSoapClient indicata dall’utente Paolo_Pedrazzi_Digit il 1 luglio che puoi trovare qui.

Saluti.

Ciao,

la fattura va inglobata in un oggetto passato come parametro alla chiamata SOAP.
Noi utilizziamo una classe molto semplice:

class fileSdIBase {
  function fileSdIBase($nomeFile, $filePath) 
  {
      $this->NomeFile = $nomeFile;
      $handle = fopen($filePath, "r");
      $contents = fread($handle, filesize($filePath));
      fclose($handle);
      $this->File = $contents;
  } 
}

Creiamo un istanza di un oggetto e lo inviamo con questo codice:

$fattura = new fileSdIBase($sendFile["nome"], $sendFile["path"]);
				
$params = array(
	  "fileSdIAccoglienza" => $fattura,
);
					
$sendResult = $client->__soapCall("RiceviFile", $params);

Saluti

Ciao,
grazie per la risposta.
Io ho risolto convertendo le SDI-XXX_CLIENT.cer in formato pem con il seguente comando:

  1. openssl x509 -inform der -in SDI-XXX._CLIENT.cer -out SDI-XXX_CLIENT.pem

Poi ho semplicemente concatenato la chiave utilizzata per la generazione delle CSR con il certificato creato nel passo precedente ottenendo un cumulativo di CHIAVE+SDI-XXX_CLIENT che ho impostato nel parametro local_cert della classe PHP SoapClient.

Inoltre ho utilizzato la chiave l’estensione MTOM trovata in rete.

Adesso sono alle prese con le notifiche. In Strumenti->Gestire il Canale -> Test Interoperabilità -> Flussi nei vari tentativi di contattare la web service esposta dal nostro server leggo l’errore:

javax.net.ssl.SSLHandshakeException: General SSLEngine problem

E’ anche vero che non ho ancora implementato la componente Soap Server ma l’errore mi fa pensare che a monte ci sia già un problema nella installazione dei certificati sul server APACHE.
Ho utilizzato la configurazione consigliata senza successo ma la cosa strana è che non mi sembra di vedere alcun log di accesso web.
Grazie.
Saluti.

Immagino che possa essere correlato alla problematica del supporto SNI