PDA

Visualizza la versione completa : [WebService/HTTPS] Certificato per client WebService


CrollaTutto
26-10-2012, 11:12
Ciao,
devo chiamare un servizio HTTPS, però per farlo devo avere io come client un certificato!

Il web service https usa un certificato rilasciato da un authority pubblica, ora se io ho capito come funziona la cosa.

Io dovrei fare richiesta ad un authority pubblica per un certificato?

valia
26-10-2012, 14:21
Originariamente inviato da CrollaTutto
Ciao,
devo chiamare un servizio HTTPS, però per farlo devo avere io come client un certificato!

Il web service https usa un certificato rilasciato da un authority pubblica, ora se io ho capito come funziona la cosa.

Io dovrei fare richiesta ad un authority pubblica per un certificato?

si, specificando che ti serve per connessioni ssl

poi il server deve "accettare" il tuo certificato (in alcuni casi anche solo chi te lo ha trustato)

MItaly
26-10-2012, 20:47
Originariamente inviato da CrollaTutto
devo chiamare un servizio HTTPS, però per farlo devo avere io come client un certificato!

Sei sicuro? Come per una normale connessione HTTPS dovrebbe essere necessario solo un certificato rilasciato da una CA riconosciuta solo per il server... :confused: Oppure è una cosa specifica del webservice che stai cercando di richiamare, nel qual caso dovresti specificare un attimo meglio il problema... :spy:

CrollaTutto
29-10-2012, 09:07
DALLE SPECIFICHE TECNICHE DEL SERVIZIO

L’applicazione client dovrà riconoscere l’autorità di certificazione che ha emesso il certificato SSL impiegato per autenticare l’interfaccia del servizio e per cifrare i dati della sessione tra il client e tale interfaccia (e/o accettare la validità di tale certificato).

La sicurezza per l’utilizzo del servizio è garantito dal protocollo HTTPS con l’utilizzo di
certificato rilasciato da una Certification Authority Pubblica attraverso il quale avviene la
cifratura dei dati trasferiti fra i sistemi di Telecom Italia e del cliente.

valia
29-10-2012, 09:31
tu stai implementando il web service? (io ho capito così).
Lato server
Allora devi fare richiesta ad una Certification Authority di certificato (verisign è un esempio, altri non me ne vengono adesso).

Ovviamente il servizio si paga.
Specifica nella richiesta l'uso che vuoi farne del tuo certificato.

Lato client
la tua applicazione deve essere in grado di stabilire una connessione ssl con il tuo server, iniziare l'handshake e ricevere il certificato del server. A quel punto deve poter verificare il certificato, in particolare deve:

1. conoscere il certificato (ci ha già fatto una connessione quindi si fida) oppure
2. conoscere chi ha emesso il certificato (e fidarsi di questo) oppure
3. rivolgersi ad un ente che mantiene una lista di certificati/CA valide e chiedere info sul certificato
4. (opzionale) controllare le CRL per essere sicuri che il certificato in questione (o quello della CA ) non sia stato revocato.

I passi sopra detti vanno ripetuti per ogni certificato presente nella catena di certificati presentati dal server.

CrollaTutto
29-10-2012, 09:48
Io sono il client. il server è la telecom :D

url del wsdl : https://www.business.tim.it/smashae2/SmashAe2?wsdl

Visualizzando da browser nessun problema, se lo faccio da codice sbrocca.

valia
29-10-2012, 09:59
mi devi dire come fai il client e dove sbrocca

CrollaTutto
29-10-2012, 10:16
dopo diversi tentativi ancora non riusciamo a stabilire una connessione sicura con il vostro webservice all'indirizzo https://www.business.tim.it/smashae2/SmashAe2; anche scaricando il wsdl all'indirizzo https://www.business.tim.it/smashae2/SmashAe2?wsdl ci risulta impossibile la suddetta connessione.

Stiamo sviluppando un applicazione in c# .net 4.0 e durante il processo di inclusione della "Web Reference" riceviamo in output il seguente messaggio di errore:

There was an error downloading 'https://www.business.tim.it/smashae2/SmashAe2?wsdl'.
The request was aborted: Could not create SSL/TLS secure channel.
There was an error downloading 'https://www.business.tim.it/smashae2/SmashAe2?wsdl/$metadata'.
The request was aborted: Could not create SSL/TLS s


Avviando invece la procedura di aggiunta "Service Reference" otteniamo il seguente messaggio d'errore:

There was an error downloading 'https://www.business.tim.it/smashae2/SmashAe2?wsdl'.
The request was aborted: Could not create SSL/TLS secure channel.
Metadata contains a reference that cannot be resolved: 'https://www.business.tim.it/smashae2/SmashAe2?wsdl'.
An error occurred while making the HTTP request to https://www.business.tim.it/smashae2/SmashAe2?wsdl. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server.
The underlying connection was closed: An unexpected error occurred on a send.
Unable to read data from the transport connection: Connessione interrotta dal software del computer host.
Connessione interrotta dal software del computer host
If the service is defined in the current solution, try building the solution and adding the service reference again.

Per meglio comprendere la situazione può visionare l'immagine allegata debug2.jpg

Abbiamo inoltre scaricato localmente il file WSDL per poi aggiungerlo al progetto ma, nonostante venga correttamente referenziato, i metodi risultano comunque inaccessibili (vedi allegato debug3.jpg).
Di seguito il segmento di codice utilizzato per la chiamata ai metodi:

SmashAe2.SmashAe2 service = new SmashAe2.SmashAe2();

var req = new SmashAe2.aeGetCreditoResiduoRequest();
req.codiceContratto = "xxxxx";
req.username = "xxxxx";
req.password = "xxxxxx";

var a = service.getCreditoResiduo(req);


ERRORE CHE VIENE DATO: http://s8.postimage.org/3thk3g7zp/errore_Smash.jpg

valia
29-10-2012, 10:23
il punto è che tu non riesci a stabilire una connessione con il tuo server, in C# dovrei fare un po' di ricerche, ma dovresti fare in modo di redizionare tutti i log su console e abilitare il debug ssl, in modo da capire perché non termina la procedura di creazione di connessione ssl

mi segui?

CrollaTutto
29-10-2012, 10:27
Si ti sto seguendo, tranqui non sono di primo pelo ma sta cosa mi sta mandando a male. nel senso ho gia dovuto comunicare con poste italiane e loro ti forniscono un certificato che tu ti metti in locale, lo aggiungi alle chiamate e tutto funziona.

Qua invece la telecom non fornisce un certificato.

Mi immagino ci sia qualche configurazione da fare sulla chiamata.

Cmq ok ti seguo...

Loading