COMMENT FAIRE : Sécuriser une application ASP.NET à l'aide de certificats côté client

Traductions disponibles Traductions disponibles
Numéro d'article: 315588 - Voir les produits auxquels s'applique cet article
Ancien nº de publication de cet article : F315588
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Agrandir tout | Réduire tout

Sommaire

Résumé

Pour les applications Web hautement sécurisées, telles que les sites bancaires Internet, vous pouvez souhaiter implémenter une solution plus sécurisée pour l'authentification des utilisateurs que la combinaison nom d'utilisateur/mot de passe. Vous pouvez utiliser des certificats numériques côté client pour vérifier l'identité de l'utilisateur. De plus, vous pouvez mapper des certificats numériques côté client sur des comptes Windows sur le serveur si nécessaire.


Conditions requises

La liste suivante met en évidence le matériel, les logiciels, l'infrastructure réseau et les Service Packs recommandés dont vous avez besoin :
  • Service Pack 2 Microsoft Windows 2000 Server
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual Studio .NET
  • Services de certificats Microsoft (si vous devez générer vos propres certificats)
Cet article suppose que vous maîtrisez les sujets suivants :
  • Développement ASP.NET avec Visual Basic ou Visual C#
  • Configuration de Microsoft Internet Information Services (IIS)

Création de l'application Web ASP.NET

Dans cette section, vous allez créer une application ASP.NET simple. Dans les sections suivantes, vous utiliserez l'authentification de certificat côté client pour sécuriser cette application.
  1. Démarrez Visual Studio .NET, puis créez un projet d'application Web ASP.NET nommé SecureSite.
  2. Faites glisser un contrôle Label de la boîte à outils sur le formulaire WebForm1.aspx, puis définissez sa propriété ID à greetingLabel.
  3. Faites glisser un deuxième contrôle Label sur WebForm1.aspx, puis définissez sa propriété ID à certDataLabel.
  4. Ajoutez le code suivant à la procédure d'événement Page_Load :
    'Visual Basic
    Dim 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. Générez et enregistrez le projet, puis fermez Visual Studio.
  6. Démarrez Internet Explorer, puis accédez à la page suivante :
    http://localhost/SecureSite/WebForm1.aspx
    Notez que la page affiche les messages "Welcome" et "No certificate was found". Notez que la page n'affiche pas de nom d'utilisateur car l'utilisateur n'a pas été authentifié.
  7. Fermez Internet Explorer.

Configuration du serveur Web pour l'authentification basée sur certificats

Dans cette section, vous allez configurer le projet SecureSite de façon à utiliser des certificats pour l'authentification. Pour utiliser des certificats côté client, vous devez installer un certificat côté serveur. Vous pouvez utiliser un certificat de serveur existant délivré par une autorité de certification quelconque ou vous pouvez générer un certificat côté serveur avec les Services de certificats Microsoft.


Création d'une demande de certificat côté serveur

  1. Dans le menu Démarrer, pointez sur Programmes, sur Outils d'administration, puis cliquez sur Gestionnaire des services Internet.
  2. Développez le noeud de votre serveur, puis cliquez sur Site Web par défaut.
  3. Dans le menu Action, cliquez sur Propriétés.
  4. Sous l'onglet Sécurité de répertoire, cliquez sur Certificat de serveur. Suivez ces étapes dans l'Assistant :
    1. Cliquez sur Suivant sur la première page de l'Assistant.
    2. Sur la page Certificat de serveur, cliquez sur Créer un certificat, puis sur Suivant.
    3. Sur la page Demande ultérieure ou immédiate, cliquez sur Préparer la demande, mais ne pas l'envoyer maintenant, puis sur Suivant.
    4. Sur la page Nom et paramètres de sécurité, acceptez les paramètres par défaut, puis cliquez sur Suivant.
    5. Sur la page Informations sur l'organisation, tapez MSDN pour l'organisation, tapez How To Articles pour l'unité d'organisation, puis cliquez sur Suivant.
    6. Sur la page Nom commun de votre site, tapez localhost, puis cliquez sur Suivant.
    7. Sur la page Informations géographiques, tapez les détails relatifs à votre pays, votre région et votre ville, puis cliquez sur Suivant.
    8. Sur la page Nom de fichier de la demande de certificat, acceptez le nom de fichier par défaut (en général c:\certreq.txt), puis cliquez sur Suivant.
    9. Sur la page Résumé du contenu du fichier de demande, vérifiez que tous les détails sont corrects, puis cliquez sur Suivant.
    10. Cliquez sur Terminer pour fermer l'Assistant.
  5. Ouvrez le fichier de certificat généré, puis copiez l'intégralité du contenu du fichier de certificat dans le presse-papiers.

Soumission d'une demande de certificat côté serveur

  1. Démarrez Internet Explorer, puis accédez à la page suivante :
    http://localhost/CertSrv
    REMARQUE : les Services de certificats Microsoft doivent être installés.
  2. Suivez ces étapes dans l'Assistant :
    1. Cliquez sur Demander un certificat, puis sur Suivant.
    2. Sur la page Choisir le type de la demande, cliquez sur Demande avancée, puis sur Suivant.
    3. Sur la page Demandes de certificat avancées, cliquez sur Soumettre une demande de certificat en utilisant un fichier crypté en Base64 PKCS #10, puis sur Suivant.
    4. Sur la page Soumettre une demande enregistrée, cliquez dans la zone Crypté en Base64 Demande de certificat (PKCS #10 ou #7), puis appuyez sur la combinaison de touches CTRL+V pour coller la demande de certificat copiée précédemment dans le presse-papiers. Cliquez sur Envoyer.
  3. Fermez Internet Explorer.

Délivrance d'un certificat côté serveur

  1. Dans le menu Démarrer, pointez sur Programmes, sur Outils d'administration, puis cliquez sur Autorité de certification.
  2. Développez le noeud de votre autorité de certification, puis sélectionnez Demandes en attente.
  3. Sélectionnez la demande de certificat que vous venez de soumettre. Dans le menu Action, pointez sur Toutes les tâches, puis cliquez sur Délivrer.
  4. Vérifiez que le certificat apparaît dans le dossier Certificats délivrés, puis double-cliquez sur le certificat pour l'afficher.
  5. Sous l'onglet Détails, cliquez sur Copier dans un fichier. Enregistrez le certificat en tant que certificat X.509 crypté en Base-64 dans C:\Servercert.cer.
  6. Fermez la boîte de dialogue Propriétés du certificat.
  7. Fermez l'outil Autorité de certification.

Installation d'un certificat côté serveur

  1. Dans le menu Démarrer, pointez sur Programmes, sur Outils d'administration, puis cliquez sur Gestionnaire des services Internet.
  2. Développez le noeud de votre serveur, puis cliquez sur Site Web par défaut.
  3. Dans le menu Action, cliquez sur Propriétés.
  4. Sous l'onglet Sécurité de répertoire, cliquez sur Certificat de serveur. Suivez ces étapes dans l'Assistant :
    1. Cliquez sur Suivant sur la première page de l'Assistant.
    2. Cliquez sur Traiter la demande en attente pour installer le certificat, puis cliquez sur Suivant.
    3. Accédez au fichier de certificat C:\Servercert.cer enregistré précédemment. Cliquez sur Suivant à deux reprises, puis cliquez sur Terminer.
  5. Cliquez sur OK pour fermer la boîte de dialogue Propriétés.

Configuration du site SecureSite pour le protocole SSL et les certificats côté client

  1. Dans le Gestionnaire des services Internet, sélectionnez le sous-site Web SecureSite et affichez ses propriétés.
  2. Suivez ces étapes dans l'Assistant :
    1. Sous l'onglet Sécurité de répertoire, cliquez sur Modifier dans la section Communications sécurisées.
    2. Activez la case à cocher Exiger un canal sécurisé (SSL). Cela garantit le cryptage des communications vers ce sous-site Web.
    3. Activez la case à cocher Exiger les certificats clients. Cela garantit que le site peut être affiché uniquement par des utilisateurs qui possèdent un certificat côté client.
    4. Activez la case à cocher Activer le mappage de certificat client. Cela permet de mapper des certificats client sur des comptes d'utilisateurs Windows.
    5. Cliquez sur Modifier. Notez que vous pouvez mapper chaque certificat sur un compte Windows individuel ou vous pouvez mapper de nombreux certificats sur le même compte Windows.
    6. Sous l'onglet Plusieurs à 1, cliquez sur Ajouter pour ajouter une règle de mappage. Nommez cette règle Règle de mappage, puis cliquez sur Suivant.
    7. Cliquez sur Nouveau pour créer une règle dans laquelle le sous-champ O (Organisation) de la section Objet du certificat a le critère "MSDN". Cliquez sur OK pour appliquer le mappage aux utilisateurs dont les certificats contiennent un attribut Organisation "MSDN". Dans un environnement de production, la règle de mappage est plus stricte et valide souvent l'émetteur du certificat aussi bien que le sujet. Cliquez sur Suivant.
    8. Sur la page Mappage, sélectionnez Accepter ce certificat pour l'authentification de connexion. Cliquez sur Parcourir pour sélectionner le compte Windows sur lequel vous souhaitez mapper des utilisateurs MSDN. Pour cet exemple, utilisez le compte Administrateur. (Dans une vraie application, vous créez un compte Windows dédié avec des privilèges restreints.) Assurez-vous d'entrer le mot de passe correct.
    9. Cliquez sur Terminer, puis confirmez le mot de passe.
  3. Cliquez sur OK pour fermer la boîte de dialogue Mappage de compte.
  4. Cliquez sur OK pour fermer la boîte de dialogue Communications sécurisées. Si vous êtes invité à appliquer les paramètres sur des fichiers et des dossiers enfants, cliquez sur Sélectionner tout, puis sur OK.
  5. Cliquez sur OK pour fermer la boîte de dialogue Propriétés de SecureSite.

Vérification de l'authentification basée sur certificats

  1. Démarrez Internet Explorer, puis accédez à la page suivante :
    https://localhost/SecureSite/WebForm1.aspx
    Notez que vous utilisez le protocole sécurisé https.
  2. Vérifiez que vous recevez un message signalant que la page requiert un certificat client.
  3. Fermez Internet Explorer.

Installation d'un certificat client

Dans cette section, vous allez installer un certificat côté client. Vous pouvez utiliser un certificat délivré par une autorité de certification quelconque ou vous pouvez utiliser les Services de certificats Microsoft pour générer votre propre certificat.


Demande de certificat côté client

  1. Démarrez Internet Explorer, puis accédez à la page suivante :
    http://localhost/CertSrv
  2. Suivez ces étapes dans l'Assistant :
    1. Cliquez sur Demander un certificat, puis sur Suivant.
    2. Sur la page Choisir le type de la demande, cliquez sur Certificat de navigateur Web, puis sur Suivant.
    3. Tapez les informations requises. Assurez-vous que vous tapez MSDN dans la zone de texte Société.
    4. Cliquez sur Envoyer pour terminer la demande.
  3. Fermez Internet Explorer.

Délivrance d'un certificat côté client

  1. Démarrez l'outil Autorité de certification à partir du groupe de programmes Outils d'administration.
  2. Développez le noeud de votre autorité de certification, puis sélectionnez Demandes en attente.
  3. Sélectionnez la demande de certificat que vous venez de soumettre. Dans le menu Action, pointez sur Toutes les tâches, puis cliquez sur Délivrer.
  4. Vérifiez que le certificat apparaît dans le dossier Certificats délivrés, puis double-cliquez sur le certificat pour l'afficher.
  5. Sous l'onglet Détails, cliquez sur Copier dans un fichier. Enregistrez le certificat en tant que certificat X.509 crypté en Base-64 dans C:\Clientcert.cer.
  6. Fermez la boîte de dialogue Propriétés du certificat.
  7. Fermez l'outil Autorité de certification.

Installation d'un certificat côté client

  1. Ouvrez l'Explorateur Windows et double-cliquez sur Clientcert.cer pour afficher le fichier du certificat.
  2. Suivez ces étapes dans l'Assistant Importation de certificat :
    1. Sur la première page de l'Assistant, cliquez sur Installer le certificat, puis sur Suivant.
    2. Activez la case à cocher Sélectionner automatiquement le magasin de certificats selon le type de certificat, puis cliquez sur Suivant.
    3. Cliquez sur Terminer pour terminer l'Assistant.
  3. Faites disparaître la boîte de message de confirmation, puis cliquez sur OK pour fermer le certificat.

Vérification du fonctionnement correct

Dans cette section, vous allez vérifier que les applications clientes possédant un certificat qui spécifie "MSDN" comme société peuvent afficher le site SecureSite. Les utilisateurs sont mappés sur le compte que vous avez spécifié dans la règle de mappage.
  1. Démarrez Internet Explorer, puis accédez à la page suivante :
    https://localhost/SecureSite/WebForm1.aspx
  2. Vérifiez que :
    • la page Web apparaît ;
    • le compte Windows approprié est utilisé ;
    • l'organisation "MSDN" est lue à partir du certificat.

Références

Pour plus d'informations sur la façon d'utiliser le protocole SSL pour sécuriser un site Web, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
298805 COMMENT FAIRE : Activation de la couche SSL pour l'ensemble des clients qui interagissent avec votre site Web

Propriétés

Numéro d'article: 315588 - Dernière mise à jour: mardi 4 décembre 2007 - Version: 4.5
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET 1.0
  • Microsoft Internet Information Services 5.0
  • Microsoft ASP.NET 1.1
  • Microsoft Internet Information Services 6.0
Mots-clés : 
kbhowtomaster kbsecurity KB315588
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com