Protezione di servizi Web

Chiamata a un servizio Web mediante l'utilizzo di certificati client da ASP.NET

In questa pagina
ObiettiviObiettivi
Ambito di applicazioneAmbito di applicazione
Utilizzo del moduloUtilizzo del modulo
RiepilogoRiepilogo
Conoscenze necessarieConoscenze necessarie
Creazione di un semplice servizio WebCreazione di un semplice servizio Web
Configurazione della directory virtuale del servizio Web per richiedere certificati clientConfigurazione della directory virtuale del servizio Web per richiedere certificati client
Creazione di un account personalizzato per eseguire il componente servitoCreazione di un account personalizzato per eseguire il componente servito
Richiesta di un certificato client per l'account personalizzatoRichiesta di un certificato client per l'account personalizzato
Test del certificato client mediante un browserTest del certificato client mediante un browser
Esportazione del certificato client in un fileEsportazione del certificato client in un file
Sviluppo del componente servito utilizzato per chiamare il servizio WebSviluppo del componente servito utilizzato per chiamare il servizio Web
Configurazione e installazione del componente servitoConfigurazione e installazione del componente servito
Sviluppo di un'applicazione Web per chiamare il componente servitoSviluppo di un'applicazione Web per chiamare il componente servito
Altre risorseAltre risorse

Obiettivi

Il modulo consente di:

Utilizzare un componente servito per consentire a un'applicazione Web di chiamare un servizio Web che richiede ai client di eseguire l'autenticazione mediante un certificato client.

Ambito di applicazione

Le informazioni contenute in questo modulo sono valide per i seguenti prodotti e tecnologie:

Microsoft® Windows® XP o Windows 2000 Server con Service Pack 3 e sistemi operativi successivi

Microsoft Internet Information Services 5.0

Servizi certificati Microsoft (se è necessario generare certificati client personalizzati)

Microsoft .NET Framework versione 1.0 con Service Pack 2

Microsoft SQL Server ™ 2000 con Service Pack 2 e versioni successive

Microsoft Visual C#® .NET

Utilizzo del modulo

Per trarre il massimo vantaggio dal modulo:

È necessario aver acquisito esperienza nell'utilizzo di Visual C# .NET e Microsoft Visual Studio® .NET.

È necessario aver acquisito esperienza nello sviluppo di applicazioni Web mediante l'utilizzo di ASP.NET.

È necessario aver acquisito esperienza nello sviluppo e nell'implementazione di componenti serviti eseguiti nel contesto di Enterprise Services (COM+).

È necessario aver acquisito esperienza nello sviluppo e nell'implementazione dei servizi Windows.

È necessario conoscere la procedura di creazione degli account utente di Windows mediante l'utilizzo degli strumenti di amministrazione di Windows.

È necessario poter accedere a un'autorità di certificazione (CA), ad esempio Servizi certificati Microsoft, se si desidera generare nuovi certificati client.

Se non si desidera generare certificati personalizzati, è necessario decidere l'autorità di certificazione (CA) commerciale a cui richiedere un certificato client. Alcune CA richiedono il pagamento di una tariffa per l'erogazione di questo servizio.

È necessario installare un certificato SSL in un server Web. Per informazioni dettagliate, leggere "Procedura - Installazione di SSL in un server Web".

Leggere il modulo 2 "Modello di protezione per le applicazioni ASP.NET", che costituisce un'introduzione ai certificati client e li confronta con altre forme di autenticazione.

Riepilogo

I certificati client offrono un meccanismo di autenticazione eccellente per le applicazioni Web. Un browser o un'altra applicazione client deve presentare un certificato valido prima che venga concesso l'accesso, evitando la necessità di richiedere al client di specificare nome utente e password. Pertanto i certificati client risultano particolarmente utili durante la creazione di servizi Web protetti a cui accedono altre applicazioni client.

In questo modulo viene descritto come chiamare un servizio Web configurato per richiedere i certificati client da un'applicazione Web.

Conoscenze necessarie

Quando si utilizzano i certificati client, l'applicazione può sfruttare anche i vantaggi offerti dalla creazione di un canale protetto (SSL, Secure Sockets Layer) tra l'applicazione client e il servizio Web. In questo modo, è possibile inviare o ricevere in modo protetto informazioni riservate al o dal servizio Web. SSL assicura l'integrità e la riservatezza dei messaggi.

Nota: le informazioni contenute in questo modulo si applicano anche ai componenti remoti ospitati in ASP.NET e IIS.

Motivi dell'utilizzo di un componente servito

La soluzione presentata in questo modulo utilizza un componente servito configurato per essere eseguito in un'applicazione server di Enterprise Services mediante un account di servizio personalizzato. L'applicazione Web ASP.NET chiama il componente servito, che esegue la chiamata al servizio Web passando un certificato client. La configurazione della soluzione è illustrata nella figura 1.

ASP.NET chiama un componente servito per richiamare il servizio Web

Figura 1
ASP.NET chiama un componente servito per richiamare il servizio Web

Questo approccio consente di assicurare che il sistema possa accedere a un profilo utente durante la comunicazione con il servizio Web. Tale requisito è necessario per l'handshake SSL iniziale.

Nota: l'account ASPNET utilizzato per eseguire le applicazioni Web dispone del privilegio che nega l'accesso interattivo con questo account. Di conseguenza, tale account non dispone di un profilo utente.

Non concedere la funzionalità di accesso interattivo all'account ASPNET o a qualsiasi account utilizzato per eseguire applicazioni Web. Adottare sempre il principio del privilegio minimo durante la configurazione degli account utilizzati per l'esecuzione di applicazioni Web e concedere a tali account il minor numero di privilegi possibile. Per ulteriori informazioni, vedere "Procedura - Creazione di un account personalizzato per eseguire ASP.NET" in questa guida.

Motivi della necessità di un profilo utente

Quando si invia una richiesta a un servizio Web che richiede certificati client, viene attivato un handshake SSL tra il client e il server. Tra i componenti scambiati sono inclusi il certificato server, il certificato client e un "segreto pre-master" generato dal client che in seguito viene utilizzato nel protocollo per generare un "segreto master".

Per consentire al server di verificare se l'autorità che ha presentato il certificato è effettivamente il proprietario della chiave privata, il client deve crittografare il segreto pre-master mediante la chiave privata e inviarlo al server. Per accedere alla chiave privata del client e firmare il segreto pre-master, il sistema deve eseguire tale operazione di accesso dall'archivio chiavi del client. L'archivio chiavi si trova nel profilo del client da caricare.

Nota: in questo modulo, il computer server del servizio Web (che ospita il servizio Web) è denominato "WSServer", mentre il computer client del servizio Web (che ospita l'applicazione Web ASP.NET client e il componente servito) è denominato "WSClient".

Creazione di un semplice servizio Web

Per creare un semplice servizio Web in un computer host di servizio Web

1.

Avviare Visual Studio .NET e creare una nuova applicazione di servizio Web ASP.NET in Visual C# denominata SecureMath.

2.

Rinominare service1.asmx come math.asmx.

3.

Aprire math.asmx.cs e rinominare la classe Service1 come math.

4.

Aggiungere alla classe math il metodo Web indicato di seguito.

[WebMethod]
public long Add(long operand1, long operand2)
{
return (operand1 + operand2);
}

5.

Scegliere Genera soluzione dal menu Genera per creare il servizio Web.

Configurazione della directory virtuale del servizio Web per richiedere certificati client

Questa procedura consente di configurare la directory virtuale del servizio Web per SSL e richiedere i certificati mediante l'utilizzo di Internet Information Services.

Per la procedura viene presupposto che nel server Web sia stato installato un certificato valido. Per ulteriori informazioni sull'installazione di certificati server Web, vedere "Procedura - Installazione di SSL in un server Web" in questa guida.

Per configurare la directory virtuale del servizio Web per richiedere certificati client

1.

Avviare Internet Information Services nel computer host del servizio Web.

2.

Passare alla directory virtuale SecureMath.

3.

Fare clic con il pulsante destro del mouse su SecureMath, quindi scegliere Proprietà.

4.

Scegliere la scheda Protezione directory.

5.

In Comunicazioni protette scegliere Modifica.
Se l'opzione Modifica non è disponibile, è probabile che non sia stato installato un certificato server Web.

6.

Selezionare la casella di controllo Richiedi un canale protetto (SSL).

7.

Selezionare l'opzione Richiedi certificati dei client.

8.

Scegliere OK, quindi di nuovo su OK.

9.

Nella finestra di dialogo Proprietà ereditate ignorate scegliere Seleziona tutto, quindi OK per chiudere la finestra di dialogo delle proprietà SecureMath.
In questo modo, le nuove impostazioni di protezione verranno applicate a tutte le sottodirectory della directory virtuale principale.

Creazione di un account personalizzato per eseguire il componente servito

Questa procedura consente di creare un nuovo account utente nel computer client del servizio Web che verrà utilizzato per eseguire il componente servito che chiama il servizio Web.

Per creare un account personalizzato per eseguire il componente servito

1.

Creare un nuovo account utente con una password sicura nel computer client. Deselezionare la casella di controllo Cambiamento obbligatorio password all'accesso successivo, quindi selezionare l'opzione Nessuna scadenza password.

2.

Aggiungere l'account al gruppo Administrators.
L'account utilizzato per caricare un profilo utente deve essere un account di amministratore nel computer locale.

Richiesta di un certificato client per l'account personalizzato

In questa procedura, l'accesso al computer client verrà eseguito utilizzando il nuovo account personalizzato. Quindi verrà inviata una richiesta relativa a un certificato. Per la procedura viene presupposto l'utilizzo di Servizi certificati Microsoft. Se non si utilizza Servizi certificati Microsoft per la creazione di nuovi certificati, inviare una richiesta relativa a un certificato client all'autorità di certificazione prescelta e installare il certificato durante l'accesso tramite l'account personalizzato.

Per questa procedura viene presupposto inoltre che Servizi certificati Microsoft sia configurato per inviare automaticamente i certificati in risposta alle richieste di certificato. È inoltre possibile configurare Servizi certificati Microsoft per le richieste in sospeso, per le quali è necessario che un amministratore rilasci in modo esplicito il certificato.

Per controllare l'impostazione di Servizi certificati Microsoft

1.

Nel computer in cui è installato Servizi certificati Microsoft scegliere Autorità di certificazione dal gruppo di programmi Strumenti di amministrazione.

2.

Espandere Autorità di certificazione (locale), fare clic con il pulsante destro del mouse sull'autorità di certificazione e scegliere Proprietà.

3.

Scegliere la scheda Modulo criterio, quindi Configura.

4.

Controllare l'opzione predefinita.

Nella procedura riportata di seguito, viene presupposto che sia selezionata l'opzione Emetti sempre il certificato.

Per richiedere un certificato client per l'account personalizzato

1.

Disconnettersi dal computer client ed eseguire nuovamente l'accesso utilizzando l'account personalizzato.
In questo modo, verrà forzata la creazione di un profilo utente per l'account personalizzato.

2.

Selezionare il percorso dell'autorità di certificazione per richiedere un certificato client. Se ad esempio l'autorità di certificazione si trova nel computer CAServer, selezionare il seguente percorso:

http://caserver/certsrv

3.

Scegliere Richiedere un certificato, quindi Avanti.

4.

Verificare che sia selezionata l'opzione Certificato utente, quindi scegliere Avanti.

5.

Scegliere Invia.
Viene generata una richiesta che viene inviata all'autorità di certificazione per l'elaborazione.

6.

Dopo il rilascio del certificato e la ricezione della risposta dal server CA, scegliere Installa questo certificato.

7.

Accertarsi che il certificato della CA emittente sia installato nel computer locale come autorità di certificazione proveniente da una fonte attendibile.
Per eseguire tale verifica, completare i seguenti passaggi:

1.

Nella barra delle applicazioni scegliere Start, quindi scegliere Esegui.

2.

Digitare mmc, quindi scegliere OK.

3.

Scegliere Aggiungi/Rimuovi snap-in dal menu File.

4.

Scegliere Aggiungi.

5.

Scegliere Certificati, quindi Aggiungi.

6.

Scegliere Account del computer, quindi Avanti.

7.

Scegliere Computer locale: (il computer su cui è in esecuzione questa console), quindi Fine.

8.

Scegliere Chiudi, quindi OK.

9.

Nel riquadro sinistro dello snap-in MMC espandere Certificati (computer locale).

10.

Espandere Autorità di certificazione fonti attendibili, quindi scegliere Certificati.

11.

Verificare che il certificato dell'autorità di certificazione sia presente nell'elenco.

In caso contrario, completare i seguenti passaggi:

1.

Digitare l'indirizzo http://caserver/certsrv.

2.

Scegliere Recuperare il certificato o l'elenco di revoche certificati, quindi Avanti.

3.

Scegliere Installa il percorso certificati CA.

Test del certificato client mediante un browser

In questa procedura, verrà utilizzato il servizio Web per verificare che non esistano problemi relativi ai certificati server o client.

Per eseguire il test del certificato client mediante un browser

1.

In Internet Explorer digitare l'indirizzo https://server/SecureMath/Math.asmx.
Accertarsi di aver specificato "https", in quanto il sito è configurato per SSL.

2.

Verrà visualizzata la finestra di dialogo Autenticazione client. Selezionare il certificato client, quindi scegliere OK.

3.

Verificare che la pagina di prova del servizio Web venga visualizzata correttamente nel browser.
Se viene visualizzata la finestra di dialogo illustrata nella figura 2, è necessario installare il certificato dell'autorità di certificazione nell'archivio Autorità di certificazione fonti attendibili, come descritto nella procedura precedente.

Finestra di dialogo Avviso di protezione

Figura 2
Finestra di dialogo Avviso di protezione

Esportazione del certificato client in un file

Questa procedura consente di esportare il certificato client in un file, che in seguito viene recuperato dal componente servito quando deve passare il certificato al servizio Web.

Per esportare il certificato client in un file

1.

In Internet Explorer scegliere Opzioni Internet dal menu Strumenti.

2.

Scegliere la scheda Contenuto.

3.

Scegliere Certificati.

4.

Scegliere sul certificato client, quindi su Esporta.

5.

Nella finestra di dialogo iniziale dell'Esportazione guidata certificati scegliere Avanti per proseguire.

6.

Verificare che sia selezionata l'opzione Non esportare la chiave privata, quindi scegliere Avanti.

7.

Accertarsi che sia selezionata l'opzione Binario codificato DER X.509 (.CER), quindi scegliere Avanti.
È necessario utilizzare questo formato in quanto .NET Framework non supporta i formati Base 64 o PKCS #7.

8.

Immettere il nome di un file di esportazione. Annotare il percorso del file di esportazione con estensione CER, poiché sarà necessario per una procedura successiva.

9.

Scegliere Avanti, quindi scegliere Fine per esportare il certificato.

10.

Chiudere Internet Explorer.

11.

Disconnettersi ed eseguire nuovamente l'accesso utilizzando il normale account di sviluppo.

Sviluppo del componente servito utilizzato per chiamare il servizio Web

Questa procedura consente di creare una nuova applicazione Libreria di classi Visual C# e il componente servito utilizzato per chiamare il servizio Web. Per la procedura viene presupposto l'utilizzo del computer client.

Per sviluppare il componente servito utilizzato per chiamare il servizio Web

1.

Avviare Visual Studio .NET e creare un nuovo progetto Libreria di classi Visual C# denominato WebServiceRequestor.

2.

Aggiungere un riferimento Web al servizio Web SecureMath.

Importante: prima di aggiungere il riferimento Web, è necessario riconfigurare temporaneamente la directory virtuale del servizio Web in modo che non siano richiesti certificati client, sebbene sia necessario SSL. Dopo l'aggiunta del riferimento Web, modificare nuovamente la directory virtuale per richiedere certificati client.

In pratica, se un sito richiede certificati client, nel server di pubblicazione sarà disponibile il file WSDL come file non in linea distinto che può essere utilizzato dagli utenti del servizio per creare il proxy.

Nella finestra di dialogo Aggiungi riferimento Web accertarsi di aver specificato https per indicare il percorso del servizio Web. In caso contrario verrà generato un errore, in quanto la directory virtuale del servizio Web è configurata per SSL.

3.

Aggiungere un riferimento all'assembly System.EnterpriseServices.

4.

Rinominare class1.cs come ProfileManager.cs.

5.

Aggiungere a ProfileManager.cs la definizione di classe riportata di seguito, sostituendo lo scheletro della classe class1. La classe ProfileManager utilizza P/Invoke per chiamare le API Win32 LoadUserProfile e UnloadUserProfile.

internal class ProfileManager
{
  [DllImport("Userenv.dll", SetLastError=true, 
             CharSet=System.Runtime.InteropServices.CharSet.Auto)]
  internal static extern bool LoadUserProfile(IntPtr hToken, 
                                              ref PROFILEINFO lp
                                              ProfileInfo);

  [DllImport("Userenv.dll", SetLastError=true,
             CharSet=System.Runtime.InteropServices.CharSet.Auto)]
  internal static extern bool  UnloadUserProfile(IntPtr hToken, 
                                                 IntPtr hProfile);

  [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
  public struct PROFILEINFO
  {
    public int dwSize; 
    public int dwFlags; 
    public String lpUserName; 
    public String lpProfilePath; 
    public String lpDefaultPath; 
    public String lpServerName; 
    public String lpPolicyPath; 
    public IntPtr hProfile; 
  }
}

6.

Aggiungere un secondo file di classe denominato MathServiceComponent.cs al progetto.

7.

Aggiungere le istruzioni using riportate di seguito a MathServiceComponent.cs, sotto l'istruzione using esistente.

using System.Net;
using System.Web.Services;
using System.Security.Principal;
using System.EnterpriseServices;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
using WebServiceRequestor.WebReference1;

8.

Aggiungere la definizione di classe riportata di seguito, che fornisce un metodo CallMathWebService pubblico. Questo metodo verrà chiamato in una procedura successiva da un'applicazione Web ASP.NET client.

Nota: nel codice riportato di seguito, sostituire il nome dell'account utilizzato per caricare il profilo utente con il nome dell'account personalizzato creato al passaggio 3, "Creazione di un account personalizzato per eseguire il componente servito".

// This class calls the web service that requires a certificate.
public class MathServiceComponent : ServicedComponent
{
  [DllImport("advapi32.dll", CharSet=CharSet.Auto, SetLastError=true)]
  private extern static bool DuplicateToken(IntPtr ExistingTokenHandle, 
                                           int SECURITY_IMPERSONATION_
                                           LEVEL,
                                           ref IntPtr DuplicateToken
                                           Handle);

  [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
  private extern static bool CloseHandle(IntPtr handle);

  // Calls the Web service that requires client certificates
  // certFilepath points to the .cer file to use
  // url is the Web service url
  // operand1 and operand2 are the parameters to pass to the Web service
  public long CallMathWebService(String certFilepath, 
                                 String url, int operand1, int operand2)
  {
    bool retVal = false;
    // Need to duplicate the token. LoadUserProfile needs a token with 
    // TOKEN_IMPERSONATE and TOKEN_DUPLICATE.
    const int SecurityImpersonation = 2;
    IntPtr dupeTokenHandle = DupeToken(WindowsIdentity.GetCurrent().Token,
                                       SecurityImpersonation);
    if(IntPtr.Zero == dupeTokenHandle)
    {
      throw new Exception("Unable to duplicate token.");
    }
    // Load the profile.
    ProfileManager.PROFILEINFO profile = new ProfileManager.PROFILEINFO();
    profile.dwSize = 32;
    //TODO: Replace with custom account name created in step 3.
    profile.lpUserName = @"machinename\customaccountname";
    retVal = ProfileManager.LoadUserProfile(dupeTokenHandle, ref profile);
    if(false == retVal)
    {
      throw new Exception("Error loading user profile. " + 
                          Marshal.GetLastWin32Error());
    }
    // Instantiate the Web service proxy
    math mathservice = new math();
    mathservice.Url = url;
    String certPath = certFilepath;
    mathservice.ClientCertificates.Add(
                                X509Certificate.CreateFromCertFile
                                (certPath));
    long lngResult = 0;
    try
    {
      lngResult = mathservice.Add(operand1, operand2);
    }
    catch(Exception ex)
    {
      if(ex is WebException)
      {
        WebException we = ex as WebException;
        WebResponse webResponse = we.Response;
        throw new Exception("Exception calling method. " + ex.Message);
      }
    }
    ProfileManager.UnloadUserProfile(WindowsIdentity.GetCurrent().Token, 
                                     profile.hProfile);
    CloseHandle(dupeTokenHandle);
    return lngResult;
  }

  private IntPtr DupeToken(IntPtr token, int Level)
  {
    IntPtr dupeTokenHandle = new IntPtr(0);
    bool retVal = DuplicateToken(token, Level, ref dupeTokenHandle);
    if (false == retVal)
    {
      return IntPtr.Zero;
    }
    return dupeTokenHandle;
  }
} // end class

9.

Scegliere Genera soluzione dal menu Genera.

Configurazione e installazione del componente servito

Questa procedura consente di configurare il componente servito, generare un nome sicuro, installarlo nella cache globale degli assembly e registrarlo con COM+.

1.

Aprire assemblyinfo.cs e aggiungere l'istruzione using riportata di seguito sotto le istruzioni using esistenti.

using System.EnterpriseServices;

2.

Aggiungere ad assemblyinfo.cs l'attributo a livello di assembly riportato di seguito per configurare il componente servito in modo che venga eseguito in un'applicazione server COM+.

[assembly: ApplicationActivation(ActivationOption.Server)]

3.

Aprire una finestra del prompt dei comandi e impostare la directory del progetto corrente.

4.

Mediante l'utilità sn.exe generare un file di chiave contenente una coppia di chiavi pubblica-privata.

sn.exe -k WebServiceRequestor.snk

5.

Tornare a Visual Studio .NET.

6.

Individuare l'attributo [AssemblyKeyFile] all'interno di assemblyinfo.cs e modificarlo in modo che faccia riferimento al file di chiave nella directory di progetto come indicato di seguito.

[assembly: AssemblyKeyFile(@"..\..\WebServiceRequestor.snk")]

7.

Scegliere Genera soluzione dal menu Genera.

8.

Tornare al prompt dei comandi ed eseguire il comando riportato di seguito per aggiungere l'assembly alla cache globale degli assembly.

gacutil.exe /i bin\debug\webservicerequestor.dll

9.

Eseguire il comando riportato di seguito per registrare l'assembly con COM+.

regsvcs bin\debug\webservicerequestor.dll

10.

Avviare Servizi componenti, disponibile nel gruppo di programmi Strumenti di amministrazione.

11.

Espandere i nodi Servizi componenti, Computer e Risorse del computer.

12.

Espandere la cartella Applicazioni COM+.

13.

Fare clic con il pulsante destro del mouse su WebServiceRequestor, quindi scegliere Proprietà.

14.

Scegliere Identità.

15.

Selezionare l'opzione Il seguente utente: ed immettere i dettagli dell'account corrispondente all'account personalizzato creato in precedenza. In questo modo, l'applicazione COM+ viene configurata per essere eseguita utilizzando l'account personalizzato.

16.

Scegliere OK per chiudere la finestra di dialogo Proprietà.

17.

Chiudere Servizi componenti.

Sviluppo di un'applicazione Web per chiamare il componente servito

Questa procedura consente di creare una semplice applicazione Web ASP.NET che verrà utilizzata come applicazione client per chiamare il servizio Web tramite il componente servito.

Per sviluppare un'applicazione Web per chiamare il componente servito

1.

Nel computer client del servizio Web creare una nuova applicazione Web ASP.NET Visual C# denominata SecureMathClient.

2.

Aggiungere un riferimento a System.EnterpriseServices.

3.

Aggiungere un riferimento al componente servito WebServiceRequestor.
Passare a WebServiceRequestor.dll, che si trova nella cartella bin\debug all'interno della directory di progetto WebServiceRequestor.

4.

Aprire WebForm1.aspx.cs e aggiungere l'istruzione using riportata di seguito sotto le istruzioni using esistenti.

using WebServiceRequestor;

5.

Visualizzare la pagina WebForm1.aspx in modalità progettazione e creare il modulo illustrato nella figura 2 utilizzando i seguenti ID:

operando1

operando2

risultato

somma

Struttura dei controlli del modulo Web

Figura 3
Struttura dei controlli del modulo Web

6.

Fare doppio clic su Aggiungi per creare un gestore eventi ButtonClick.

7.

Aggiungere al gestore eventi il seguente codice:

Nota: impostare la stringa certPath sul percorso del file del certificato esportato nella procedura 6, "Esportazione del certificato client in un file".

Impostare la stringa url sull'URL HTTPS del servizio Web.

private void add_Click(object sender, System.EventArgs e)
{
  // TODO: Replace with a valid path to your certificate
  string certPath = @"C:\CustomAccountCert.cer";
  // TODO: Replace with a valid URL to your Web service
  string url = "https://wsserver/securemath/math.asmx";
  MathServiceComponent mathComp = new MathServiceComponent();
        
  long addResult = mathComp.CallMathWebService( certPath, 
                                     url, 
                                     Int32.Parse(operand1.Text), 
                                     Int32.Parse(operand2.Text));
  result.Text = addResult.ToString();
}

8.

Scegliere Genera soluzione dal menu Genera.

9.

Eseguire l'applicazione. Immettere due numeri da sommare, quindi scegliere Aggiungi.
L'applicazione Web chiamerà il componente servito, che chiamerà il servizio Web utilizzando SSL e passando il certificato client.

Altre risorse

Per ulteriori informazioni, vedere "Procedura - Installazione di SSL in un server Web" in questa guida.


**
In questo articolo
**