Posts
163
Comments
179
Trackbacks
5
Consumare e testare web service con SSL

Spesso e volentieri quando si sviluppano e si distribuiscono web service, si utilizza SSL per incrementare e migliorare la sicurezza.
Se si utilizza un certificato rilasciato da una certification authority (come si dovrebbe sempre fare!) non ci sono particolari problemi. Però in ambiente di test spesso e volentieri si utilizza un certificato self-signed che può essere facilmente creato attraverso il tool Makecert o attraverso gli IIS 6.0 Resource Kit Tools.

In quest'ultimo caso, quando si va a consumare un web service da un'applicazione .NET viene restituita un'eccezione che indica che il certificato utilizzato non è valido. Come fare? Lorenzo ha già indicato la via attraverso un suo tip.

Con il Framework 2.0 il metodo descritto è considerato obsoleto (anche se funziona) e viene consigliato di utilizzare il delegate ServicePointManager.ServerCertificateValidationCallback.
Dal punto di vista pratico cambia molto poco (non è più necessario creare una nuova classe):

' Prima di creare il proxy, assegno il callback per la verifica del certificato ServicePointManager.ServerCertificateValidationCallback = _ new RemoteCertificateValidationCallback(AddressOf ValidateCertificate) ' Creo l'oggetto Dim service As New MyWebService.Service Dim s As String ' Richiamo la funzione del web service s = service.HelloWorld service.Dispose()

La funzione ValidateCertificate ha il compito di effettuare la procedura di validazione: 

Private Function ValidateCertificate(ByVal sender As Object, _ ByVal certificate As X509Certificate, _ ByVal chain As X509Chain, _ ByVal sslPolicyErrors As SslPolicyErrors) As Boolean ' Verifico l'issuer If certificate.Issuer <> "MyIssuer" Then Return False ' Certificato valido Return True

Nell'esempio la funzione di verifica fa ben poco. Controlla solo che l'issuer del certificato sia quello atteso.
Chiaramente è possibile (e vivamente consigliato) implementare logiche di verifica più complesse, prima fra tutte la verifica della scadenza del certificato.

Technorati Tags: , ,


posted on giovedì 27 settembre 2007 23:55 Print
Comments have been closed on this topic.
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.

La mia foto

Logo MCAD
Logo MCTS