# Accreditamento SDICoop: configurazione SSL su Apache

**URL:** <https://forum.italia.it/t/accreditamento-sdicoop-configurazione-ssl-su-apache/3314>\
**Category:** Fatturazione Elettronica\
**Created:** [14 Maggio 2018, 2:33pm UTC](https://forum.italia.it/t/accreditamento-sdicoop-configurazione-ssl-su-apache/3314 "2018-05-14T14:33:01Z")\
**Posts on this page:** 1\
**Showing post:** 6

<div class="post-metadata">

**Author:** ![amasini](https://forum.italia.it/user_avatar/forum.italia.it/amasini/32/2280_2.png) [@amasini](https://forum.italia.it/u/amasini)\
**Post date:** [18 Maggio 2018, 6:00am UTC](https://forum.italia.it/t/accreditamento-sdicoop-configurazione-ssl-su-apache/3314/6 "2018-05-18T06:00:41Z")

</div>

Salve a tutti, anche noi abbiamo lo stesso problema.  
Condivido la nostra problematica nella speranza di trovare una via comune risolutiva.

Il nostro Web Service è caricato in un server Linux ed implementato tramite PHP.

**PARTE 1**

Fino ad ora abbiamo provato ad eseguire l’invio delle fatture tramite la classe SoapClient di php, con il seguente codice:

$ssl\_params=array(  
//‘ciphers’=\>“ECDHE-RSA-AES128-SHA256”, //non influente  
//‘crypto\_method’=\>non necessario  
‘verify\_peer’=\>true,  
‘local\_cert’ =\>“SDI-XXXXXXXXXXX.pem”,  
//‘local\_pk’ =\>“SDI-XXXXXXXXXXX.key”,  
‘cafile’=\>“caentrate\_full.der”,  
);

$client\_params=array(  
“location”=\>$endpoint,  
“cache\_wsdl”=\>WSDL\_CACHE\_NONE,  
“trace”=\>TRUE,  
“stream\_context”=\>stream\_context\_create([‘ssl’ =\> $ssl\_params]);  
);

$client=new SoapClient($wsdl,$client\_params);

Abbiamo eseguito un’infinità di combinazione dei certificati ottenendo sempre lo stesso risultato:  
{“faultstring”:“Forbidden”,“faultcode”:“HTTP”}

Faccio presente che in ambiente PHP i file tipo P12 o PFX non sono supportati quindi bisogna convertirli in PEM. Ma anche eseguendo questa conversione otteniamo lo stesso risultato: “FORBIDDEN”.

**E’ assai strano che in un precedente Test di Accreditamento, con il codice appena esposto, siamo riusciti a inviare le fatture, ma avviando un nuovo test non funzionava più.**

**PARTE 2**

A questo punto abbiamo supposto che la classe SoapClient di php non sia in grado di supportare efficacemente il protocollo SSL, quindi abbiamo creato una classe derivata “SDISoapClient” (estendendo SoapClient) ed abbiamo fatto l’override della funzione \_doRequest(). L’intento è quello di inviare le SOAP request tramite CURL che offre maggiori controlli.

function \_\_doRequest($request, $location, $action, $version){  
$certspath="./path\_to\_certs/";  
//CA file  
$cafile=“caentrate\_full.pem”;  
//PRIVATE KEY file  
$keyFile = “SDI-XXXXXXXXXXX.key”;  
//Client CERT file  
$clientCertFile = “SDI-XXXXXXXXXXX.pem”;  
$headers = array(  
"Content-type: text/xml;charset=“utf-8"”,  
“Accept: text/xml”,  
“Cache-Control: no-cache”,  
“Pragma: no-cache”,  
“SOAPAction: {$action}”,  
//"Content-length: ".strlen($request),  
);  
$ch = curl\_init();  
curl\_setopt($ch, CURLOPT\_SSL\_VERIFYPEER, true);  
curl\_setopt($ch, CURLOPT\_SSL\_VERIFYHOST, 2);  
//curl\_setopt($ch, CURLOPT\_PORT, 443);  
curl\_setopt($ch, CURLOPT\_SSLKEY, $certspath.$keyFile);  
curl\_setopt($ch, CURLOPT\_SSLCERT, $certspath.$clientCertFile);  
curl\_setopt($ch, CURLOPT\_CAINFO, $certspath.$cafile);  
curl\_setopt($ch, CURLOPT\_URL, $location);  
curl\_setopt($ch, CURLOPT\_RETURNTRANSFER, true);  
curl\_setopt($ch, CURLOPT\_TIMEOUT, 60);  
curl\_setopt($ch, CURLOPT\_POST, true);  
curl\_setopt($ch, CURLOPT\_POSTFIELDS, $request); // la SOAP request  
curl\_setopt($ch, CURLOPT\_HTTPHEADER, $headers);

//INVIO  
$dati = curl\_exec($ch);  
$err\_num=curl\_errno ($ch);  
$err\_desc=curl\_error($ch);  
$httpcode = curl\_getinfo($ch, CURLINFO\_HTTP\_CODE);  
curl\_close($ch);  
//DEBUG  
echo “—CURL RESPONSE:\ndati={$dati}\nerr\_num={$err\_num}\nerr\_desc={$err\_desc}\nhttpcode={$httpcode}”;die;  
}

Anche in questo caso abbiamo tentato una combinazione infinita di certificati e chiavi private (cifrate e non cifrate) ottenendo sempre lo stesso risultato:

Error 403: AuthenticationFailed

Abbiamo aperto un ticket per il SdI ormai da una settimana ma non abbiamo ricevuto alcuna risposta.

Spero che qualcuno riesca a trovare una soluzione.

Attendo con speranza un vostro contributo.

---

_[View the full topic](https://forum.italia.it/t/accreditamento-sdicoop-configurazione-ssl-su-apache/3314)._
