Procedura: Proteggere un'applicazione ASP.NET utilizzando i certificati del lato Client

Riepilogo

Per le applicazioni Web altamente protette, quali siti Internet banking, si consiglia di implementare una soluzione più sicura per l'autenticazione utente più la combinazione nome utente e password. È possibile utilizzare i certificati digitali lato client per verificare l'identità dell'utente. Inoltre, è possibile mappare i certificati digitali lato client agli account di Windows sul server se necessario.

Torna all'inizio

Requisiti

Nell'elenco seguente sono indicati l'hardware consigliato, il software, l'infrastruttura di rete e i service pack necessari:
  • Server di Microsoft Windows 2000 Service Pack 2
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual Studio .NET
  • Servizi certificati Microsoft (se è necessario generare certificati personalizzati)
In questo articolo si presuppone che si abbia familiarità con i seguenti argomenti:
  • Sviluppo di ASP.NET con Visual Basic o Visual C#
  • Configurazione di Microsoft Internet Information Services (IIS)
Torna all'inizio

Creare l'applicazione Web ASP.NET

In questa sezione, si crea una semplice applicazione ASP.NET. Nelle sezioni a seguire, si utilizzerà l'autenticazione del client per proteggere l'applicazione.

  1. Avviare Visual Studio .NET e quindi creare un nuovo progetto applicazione Web ASP.NET denominato SecureSite.
  2. Trascinare un controllo Label dalla casella degli strumenti nel form Web WebForm1. aspx e quindi impostare la proprietà ID su greetingLabel.
  3. Trascinare un secondo controllo Label in WebForm1. aspx e quindi impostare la proprietà ID su certDataLabel.
  4. Aggiungere il seguente codice alla routine evento Page_Load :
    'Visual BasicDim username As String
    userName = User.Identity.Name
    greetingLabel.Text = "Welcome " & userName
    Dim cert As HttpClientCertificate = Request.ClientCertificate
    If cert.IsPresent Then
    'Get the Organization (O) field from the Subject section.
    certDataLabel.Text = cert.Get("Subject O")
    Else
    certDataLabel.Text = "No certificate was found."
    End If

    //Visual C#string userName;
    userName = User.Identity.Name;
    greetingLabel.Text = "Welcome " + userName;
    HttpClientCertificate cert = Request.ClientCertificate;
    if (cert.IsPresent)
    certDataLabel.Text = cert.Get("SUBJECT O");
    else
    certDataLabel.Text="No certificate was found.";

  5. Compilare e salvare il progetto e quindi chiudere Visual Studio.
  6. Avviare Internet Explorer e quindi passare alla seguente pagina:
    http://localhost/SecureSite/WebForm1.aspx
    Si noti che la pagina mostra i messaggi "Welcome" e "No certificate was found". Si noti che la pagina non visualizza un nome utente perché l'utente non è stato autenticato.
  7. Chiudere Internet Explorer.
Torna all'inizio

Configurare il Server Web per l'autenticazione basata su certificati

In questa sezione configurare il progetto SecureSite per utilizzare i certificati per l'autenticazione. Per utilizzare i certificati del lato client, è necessario installare un certificato sul lato server. È possibile utilizzare un certificato server esistente da qualsiasi autorità di certificazione oppure è possibile generare un certificato sul lato server con Servizi certificati Microsoft.

Torna all'inizio

Per creare una richiesta di certificato sul lato Server

  1. Menu di avvio , scegliere programmi, Strumentidi amministrazione e quindi fare clic su Gestione servizi Internet.
  2. Espandere il nodo del server e quindi fare clic su sito Web predefinito.
  3. Scegliere proprietàdal menu azione .
  4. Nella scheda Protezione Directory , fare clic su Certificato Server. Eseguire la procedura guidata:
    1. Fare clic su Avanti nella prima pagina della procedura guidata.
    2. Nella pagina Certificato Server , fare clic su Crea un nuovo certificatoe quindi fare clic su Avanti.
    3. Nella pagina richiesta con invio immediato o posticipato , fare clic su preparare la richiesta per inviarlo in un secondo momentoe quindi fare clic su Avanti.
    4. Nella pagina nome e le impostazioni di protezione , accettare le impostazioni predefinite e quindi fare clic su Avanti.
    5. Nella pagina Informazioni organizzazione digitare MSDN per l'organizzazione, digitare Come per gli articoli per l'unità organizzativa e quindi fare clic su Avanti.
    6. Nella pagina Nome comune del sito , digitare localhoste quindi fare clic su Avanti.
    7. Nella pagina delle Informazioni geografiche , digitare il paese, regione e città dettagli e quindi fare clic su Avanti.
    8. Nella pagina Nome File di richiesta di certificato , accettare il nome di file predefinito (in genere c:\certreq.txt.) e quindi fare clic su Avanti.
    9. Nella pagina Riepilogo File richiesta , verificare che tutti i dettagli siano corretti e quindi fare clic su Avanti.
    10. Fare clic su Fine per chiudere la procedura guidata.
  5. Aprire il file di certificato che viene generato e quindi copiare l'intero contenuto del file di certificato negli Appunti.
Torna all'inizio

Per inviare una richiesta di certificato sul lato Server

  1. Avviare Internet Explorer e quindi passare alla seguente pagina:
    http://localhost/CertSrv
    Nota: è necessario installare Microsoft Certificate Services.
  2. Eseguire la procedura guidata:
    1. Fare clic su richiedere un certificatoe quindi fare clic su Avanti.
    2. Nella pagina Scegliere il tipo di richiesta , fare clic su richiesta avanzatae quindi fare clic su Avanti.
    3. Nella pagina Richieste avanzate di certificati , fare clic su inviare una richiesta di certificato utilizzando un base64 codifica file PKCS #10e quindi fare clic su Avanti.
    4. Nella pagina Invia una richiesta di salvataggio , fare clic su nella finestra di richiesta di certificato codificato Base64 (PKCS #10 o #7) e quindi premere la combinazione di tasti CTRL + V per incollare la richiesta di certificato copiato precedentemente negli Appunti. Fare clic su Invia.
  3. Chiudere Internet Explorer.
Torna all'inizio

Per emettere un certificato sul lato Server

  1. Menu di avvio , scegliere programmi, Strumentidi amministrazione e quindi fare clic su Autorità di certificazione.
  2. Espandere il nodo di un'autorità di certificazione e quindi selezionare Le richieste in sospeso.
  3. Selezionare la richiesta di certificato appena inviata. Dal menu azione , scegliere Tutte le attivitàe quindi fare clic su Emetti.
  4. Verificare che il certificato nella cartella certificati emessi e quindi fare doppio clic sul certificato per visualizzarlo.
  5. Nella scheda Dettagli , fare clic su Copia su File. Salvare il certificato come certificato x. 509 per C:\Servercert.cer con codifica Base 64.
  6. Chiudere la finestra di dialogo proprietà del certificato.
  7. Chiudere lo strumento autorità di certificazione.
Torna all'inizio

Per installare un certificato sul lato Server

  1. Menu di avvio , scegliere programmi, Strumentidi amministrazione e quindi fare clic su Gestione servizi Internet.
  2. Espandere il nodo del server e quindi fare clic su sito Web predefinito.
  3. Scegliere proprietàdal menu azione .
  4. Nella scheda Protezione Directory , fare clic su Certificato Server. Eseguire la procedura guidata:
    1. Fare clic su Avanti nella prima pagina della procedura guidata.
    2. Fare clic su Elabora la richiesta in sospeso per installare il certificato e quindi fare clic su Avanti.
    3. Individuare il file di certificato C:\Servercert.cer che è stato salvato in precedenza. Fare clic su Avanti due volte, quindi fare clic su Fine.
  5. Fare clic su OK per chiudere la finestra di dialogo proprietà .
Torna all'inizio

Per configurare il sito SecureSite per SSL e certificati lato Client

  1. In Gestione servizi Internet, selezionare il Web secondario SecureSite e visualizzarne le proprietà.
  2. Eseguire la procedura guidata:
    1. Nella scheda Protezione Directory , fare clic su Modifica nella sezione comunicazioni protette .
    2. Selezionare la casella di controllo Richiedi un canale protetto (SSL) . Ciò garantisce che le comunicazioni per il sito Web secondario sono crittografate.
    3. Selezionare la casella di controllo Richiedi certificati dei client . Ciò garantisce che il sito può essere visualizzato solo dagli utenti che hanno installato un certificato client-side.
    4. Selezionare la casella di controllo Abilita mapping dei certificati client . Viene utilizzato per eseguire il mapping dei certificati client agli account utente di Windows.
    5. Fare clic su Modifica. Si noti che è possibile eseguire il mapping di ogni certificato per un singolo account di Windows oppure è possibile associare più certificati per lo stesso account di Windows.
    6. Nella scheda molti-a-1 , fare clic su Aggiungi per aggiungere una regola di mappatura. Nome Regola di Mapping diquesta regola e quindi fare clic su Avanti.
    7. Fare clic su Nuovo per creare una nuova regola in cui il campo secondario O (organizzazione) della sezione soggetto del certificato ha criteri di "MSDN". Fare clic su OK per applicare il mapping agli utenti i cui certificati contengono un attributo dell'organizzazione di "MSDN". In un ambiente di produzione, la regola di mapping è più restrittiva e spesso convalida l'emittente del certificato, nonché l'oggetto. Fare clic su Avanti.
    8. Nella pagina Mapping , selezionare accetta questo certificato per l'autenticazione di accesso. Fare clic su Sfoglia per selezionare l'account di Windows che si desidera mappare gli utenti MSDN per. Per questo esempio, utilizzare l'account di amministratore. (In un'applicazione reale, si crea un account Windows dedicato con privilegi limitati.) Assicurarsi di digitare la password corretta.
    9. Fare clic su Finee quindi confermare la password.
  3. Fare clic su OK per chiudere la finestra di dialogo Mapping Account .
  4. Fare clic su OK per chiudere la finestra di dialogo Comunicazioni protette . Se viene chiesto di applicare le impostazioni a cartelle e file figlio, fare clic su Seleziona tuttoe quindi fare clic su OK.
  5. Fare clic su OK per chiudere la finestra di dialogo Proprietà SecureSite .
Torna all'inizio

Per verificare l'autenticazione basata su certificati

  1. Avviare Internet Explorer e quindi passare alla seguente pagina:
    https://localhost/SecureSite/WebForm1.aspx
    In alternativa è utilizzare il protocollo protetto https.
  2. Confermare la ricezione di un messaggio che la pagina richiede un certificato client.
  3. Chiudere Internet Explorer.
Torna all'inizio

Installare un certificato Client

In questa sezione, installare un certificato sul lato client. È possibile utilizzare un certificato da qualsiasi autorità di certificazione oppure è possibile utilizzare Servizi certificati Microsoft per generare il proprio certificato.

Torna all'inizio

Per richiedere un certificato Client-Side

  1. Avviare Internet Explorer e quindi passare alla seguente pagina:
    http://localhost/CertSrv
  2. Eseguire la procedura guidata:
    1. Fare clic su richiedere un certificatoe quindi fare clic su Avanti.
    2. Nella pagina Scegliere il tipo di richiesta , fare clic su Certificato Browser Webe quindi fare clic su Avanti.
    3. Digitare le informazioni necessarie. Assicurarsi di digitare nella casella di testo società MSDN .
    4. Fare clic su Invia per completare la richiesta.
  3. Chiudere Internet Explorer.
Torna all'inizio

Per emettere un certificato client

  1. Avviare lo strumento autorità di certificazione dal gruppo di programmi Strumenti di amministrazione .
  2. Espandere il nodo di un'autorità di certificazione e quindi selezionare Le richieste in sospeso.
  3. Selezionare la richiesta di certificato appena inviata. Dal menu azione , scegliere Tutte le attivitàe quindi fare clic su Emetti.
  4. Verificare che il certificato nella cartella certificati emessi e quindi fare doppio clic sul certificato per visualizzarlo.
  5. Nella scheda Dettagli , fare clic su Copia su File. Salvare il certificato come certificato x. 509 per C:\Clientcert.cer con codifica Base 64.
  6. Chiudere la finestra di dialogo proprietà del certificato.
  7. Chiudere lo strumento autorità di certificazione.
Torna all'inizio

Per installare un certificato Client-Side

  1. Aprire Esplora risorse e fare doppio clic su Clientcert.cer per visualizzare il file di certificato.
  2. Seguire la procedura Importazione guidata certificati:
    1. La prima pagina della procedura guidata, fare clic su Installa certificatoe quindi fare clic su Avanti.
    2. Selezionare la casella di controllo Selezionare automaticamente l'archivio certificati in base al tipo di certificato e quindi fare clic su Avanti.
    3. Fare clic su Fine per completare la procedura guidata.
  3. Chiudere la finestra di messaggio di conferma e quindi fare clic su OK per chiudere il certificato.
Torna all'inizio

Verificare che funzioni

In questa sezione, verificare che le applicazioni client con certificati che specificano "MSDN" come società può visualizzano il sito SecureSite. Gli utenti sono associati all'account specificato nella regola di mapping.

  1. Avviare Internet Explorer e quindi passare alla seguente pagina:
    https://localhost/SecureSite/WebForm1.aspx
  2. Verificare che:
    • Verrà visualizzata la pagina Web.
    • Viene utilizzato l'account di Windows appropriato.
    • L'organizzazione "MSDN" viene letto dal certificato.
Torna all'inizio

Riferimenti

Per ulteriori informazioni sull'utilizzo di Secure Sockets Layer (SSL) per proteggere un sito Web, fare clic sul numero dell'articolo per visualizzare l'articolo della Microsoft Knowledge Base riportato di seguito:

298805 HOW TO: attivare SSL per tutti gli utenti che interagiscono con il sito Web in Internet Information Services
Torna all'inizio
Proprietà

ID articolo: 315588 - Ultima revisione: 30 gen 2017 - Revisione: 1

Feedback