Ciao a tutti,
ho un problema che non riesco a risolvere e tutti i suggerimenti che ho trovato in internet non mi sono stati di aiuto.
Ecco lo scenario.
Ho un applicativo web fatto in vb.net (con visual studio 2005 e che usa il framework 2.0) che gira su una macchina virtuale windows 7.
Questo applicativo deve accedere ad un web service che richiede un certificato di autenticazione client.
Dopo aver installato il certificato (in local computer) e assegnato i diritti all'utente "servizio di rete" (è l'utente con cui gira l'application pool di iis), me lo sono caricato lato codice e lo passo nella chiamata al web service.
'Leggo il nome del certificato dal file di configurazione
Dim nvc As Specialized.NameValueCollection
nvc = DirectCast(ConfigurationManager.GetSection("Sogei.WebService/settings"), Specialized.NameValueCollection)
Dim certificateName As String
certificateName = nvc("SubjectNameCertificate")
Dim store As X509Store
store = New X509Store(StoreLocation.LocalMachine)
store.Open(OpenFlags.[ReadOnly] Or OpenFlags.OpenExistingOnly)
Dim collection As System.Collections.IList
collection = store.Certificates.Find(X509FindType.FindBySubjectName, certificateName, False)
If collection.Count = 0 Then
Throw New Exception("Nessun certificato digitale selezionato.")
End If
Dim certificate As System.Security.Cryptography.X509Certificates.X509Certificate
certificate = CType(collection(0), X509Certificate)
wsSogei.ClientCertificates.Add(certificate)
Passo poi anche delle credenziali al web service.
E fin qui funziona tutto.
Il problema è quando la chiamata al web service viene fatta, sempre dall'applicazione web, ma dal server di produzione (un windows server 2003).
Anche lì è stato installato il certificato client e sono stati dati i diritti all'utente "network service".
Però mi viene sempre restituito l'errore: Richiesta annullata: Impossibile creare un canale sicuro SSL/TLS
Ho abilitato il tracing e nel file di log generato ottengo (dopo altre cose)
System.Net Information: 0 : [4208] InitializeSecurityContext(credential = System.Net.SafeFreeCredential_SECURITY, context = 149da0:1b2baf8, targetName = ws.sanita.finanze.it, inFlags = ReplayDetect, SequenceDetect, Confidentiality, AllocateMemory, InitManualCredValidation)
System.Net Information: 0 : [4208] InitializeSecurityContext(numero In-Buffer=2, lunghezza Out-Buffer=0, codice restituito=InvalidToken).
System.Net.Sockets Verbose: 0 : [4208] Socket#59758912::Dispose()
System.Net Error: 0 : [4208] Exception in the HttpWebRequest#1573615:: - Richiesta annullata: Impossibile creare un canale sicuro SSL/TLS..
System.Net Error: 0 : [4208] Exception in the HttpWebRequest#1573615::EndGetResponse - Richiesta annullata: Impossibile creare un canale sicuro SSL/TLS..
La chiamata con SoapUI (sempre dal server di produzione) va a buon fine.
Non so più dove sbattere la testa! :-(
Avete qualche suggerimento?
Grazie
Sara