Ajout de mappages un-à-un <add>
L’élément <add>
de l’élément <oneToOneMappings>
spécifie un mappage unique entre un certificat client individuel et un compte d’utilisateur individuel.
Notes
Les mappages de certificats un-à-un diffèrent des mappages de certificats plusieurs-à-un, qui peuvent mapper plusieurs certificats à un seul compte d’utilisateur.
Version | Notes |
---|---|
IIS 10.0 | L’élément <add> n’a pas été modifié dans IIS 10.0. |
IIS 8.5 | L’élément <add> n’a pas été modifié dans IIS 8.5. |
IIS 8.0 | L’élément <add> n’a pas été modifié dans IIS 8.0. |
IIS 7.5 | L’élément <add> n’a pas été modifié dans IIS 7.5. |
IIS 7.0 | L’élément <add> de l’élément <oneToOneMappings> a été introduit dans IIS 7.0. |
IIS 6.0 | L’élément <oneToOneMappings> remplace l’objet métabase IIsCertMapper IIS 6.0. |
L’élément <iisClientCertificateMappingAuthentication>
n’est pas disponible dans l’installation par défaut d’IIS 7 et versions ultérieures. Pour l’installer, procédez comme suit.
- Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
- Dans Gestionnaire de serveur, cliquez sur le menu Gérer, puis sur Ajouter des rôles et des fonctionnalités.
- Dans l’Assistant Ajout de rôles et de fonctionnalités, cliquez sur Suivant. Sélectionnez le type d’installation, puis cliquez sur Suivant. Sélectionnez le serveur de destination, puis cliquez sur Suivant.
- Dans la page Rôles serveur, développez Serveur web (IIS), Serveur web, Sécurité, puis sélectionnez Authentification par mappage de certificat client IIS. Sélectionnez Suivant.
. - Dans la page Sélectionner les composants, cliquez sur Suivant.
- Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
- Dans la page Résultats , cliquez sur Fermer.
- Dans l’écran d’accueil, déplacez le pointeur jusqu’au coin inférieur gauche, cliquez avec le bouton droit sur le bouton Démarrer, puis cliquez sur Panneau de configuration.
- Dans le Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
- Développez Internet Information Services, Services World Wide Web, Sécurité, puis sélectionnez Authentification par mappage de certificat client IIS.
- Cliquez sur OK.
- Cliquez sur Fermer.
- Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire de serveur.
- Dans le volet de hiérarchie Gestionnaire de serveur, développez Rôles, puis cliquez sur Serveur web (IIS).
- Dans le volet Serveur web (IIS), faites défiler jusqu’à la section Services de rôle, puis cliquez sur Ajouter des services de rôle.
- Dans la page Sélectionner des services de rôle de l’Assistant Ajout de services de rôle, sélectionnez Authentification par mappage de certificat client IIS, puis cliquez sur Suivant.
- Dans la page Confirmer les sélections pour l'installation, cliquez sur Installer.
- Dans la page Résultats , cliquez sur Fermer.
- Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
- Dans le Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
- Développez Internet Information Services, puis sélectionnez Authentification par mappage de certificat client IIS, puis cliquez sur OK.
Il n’existe aucune interface utilisateur pour configurer l’authentification par mappage de certificat client IIS pour IIS 7. Pour obtenir des exemples de configuration de l’authentification par mappage de certificat client IIS par programmation, consultez la section Exemples de code de ce document.
Attribut | Description |
---|---|
certificate |
Attribut de chaîne requis. Spécifie le certificat public encodé en base 64 à partir d’un certificat client. IIS compare ce certificat à la copie du certificat envoyé sur Internet par un client web. Les deux chaînes de données doivent être identiques pour que le mappage continue. Si un client obtient un autre certificat, il ne correspond pas à l’original, même si la copie contient les mêmes informations utilisateur que l’original. S’il existe des sauts de ligne dans la chaîne encodée en base64 du certificat client dans cet attribut, vous devez les supprimer. Les sauts de ligne peuvent interférer avec la capacité du serveur à comparer le certificat du serveur au certificat envoyé par le navigateur. |
enabled |
Attribut booléen facultatif. Spécifie si le mappage un-à-un est activé. La valeur par défaut est true . |
password |
Attribut de chaîne facultatif. Spécifie le mot de passe du compte utilisé pour authentifier les clients. Remarque : pour éviter de stocker des chaînes de mot de passe non chiffrées dans des fichiers de configuration, utilisez toujours AppCmd.exe pour entrer des mots de passe. Si vous utilisez ces outils de gestion, les chaînes de mot de passe sont chiffrées automatiquement avant d’être écrites dans les fichiers de configuration XML. Cela offre une meilleure sécurité pour les mots de passe que le stockage de mots de passe non chiffrés. |
username |
Attribut de chaîne facultatif. Spécifie le nom d’utilisateur du compte utilisé pour authentifier les clients. |
Aucune.
L’exemple de configuration suivant active l’authentification par mappage de certificat client IIS à l’aide d’un mappage de certificat un-à-un pour le site web par défaut, crée un mappage de certificat un-à-un pour un compte d’utilisateur et configure le site pour exiger SSL et négocier des certificats clients.
<location path="Default Web Site">
<system.webServer>
<security>
<access sslFlags="Ssl, SslNegotiateCert" />
<authentication>
<windowsAuthentication enabled="false" />
<anonymousAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="true"
oneToOneCertificateMappingsEnabled="true">
<oneToOneMappings>
<add enabled="true"
userName="administrator"
password="[enc:57686f6120447564652c2049495320526f636b73:enc]"
certificate="Base64-Encoded-Certificate-Data" />
</oneToOneMappings>
</iisClientCertificateMappingAuthentication>
</authentication>
</security>
</system.webServer>
</location>
Notes
Pour récupérer des données de certificat encodées en base 64 pour tous les exemples de cette rubrique, vous pouvez exporter un certificat en procédant comme suit :
Cliquez sur Démarrer, puis sur Exécuter.
Entrez MMC, puis cliquez sur OK.
Quand Microsoft Management Console s’ouvre, cliquez sur Fichier, puis sur Ajouter ou supprimer des composants logiciels enfichables.
Dans la boîte de dialogue Ajouter ou supprimer des composants logiciels enfichables :
- Mettez en surbrillance Certificats dans la liste des composants logiciels enfichables disponibles, puis cliquez sur Ajouter.
- Choisissez de gérer les certificats pour Mon compte d’utilisateur, puis cliquez sur Terminer.
- Cliquez sur OK pour fermer la boîte de dialogue.
Dans Microsoft Management Console :
- Développez Certificats - Utilisateur actuel, puis Personnel, puis Certificats.
- Dans la liste des certificats, cliquez avec le bouton droit sur le certificat que vous souhaitez exporter, puis cliquez sur Toutes les tâches et sur Exporter.
Quand l’Assistant Exportation de certificat s’ouvre :
- Sélectionnez Suivant.
- Choisissez Non, ne pas exporter la clé privée, puis cliquez sur Suivant.
- Choisissez X.509 9 encodé en base 64 (. CER) pour le format d’exportation, puis cliquez sur Suivant.
- Choisissez d’enregistrer le certificat sur votre bureau en tant que MyCertificate.cer, puis cliquez sur Suivant.
- Cliquez sur Terminer ; vous devez voir une boîte de dialogue indiquant que l’exportation a réussi.
Fermez Microsoft Management Console.
Ouvrez le fichier MyCertificate.cer que vous avez exporté à l’aide du Bloc-notes Windows :
- Supprimez « -----BEGIN CERTIFICATE----- » au début du texte.
- Supprimez « -----END CERTIFICATE----- » à la fin du texte.
- Concaténez toutes les lignes en une seule ligne de texte : il s’agit des données de certificat encodées en base 64 que vous utiliserez pour tous les exemples de cette rubrique.
Les exemples de code suivants activent l’authentification par mappage de certificat client IIS à l’aide d’un mappage de certificat un-à-un pour le site web par défaut, créent un mappage de certificat un-à-un pour un compte d’utilisateur et configurent le site pour exiger SSL et négocier des certificats clients.
Notes
Pour récupérer les données de certificat encodées en base 64 pour les exemples de code répertoriés ci-dessous, vous pouvez exporter un certificat en suivant les étapes listées dans la section Détails de la configuration de ce document.
Notes
En raison de caractères dans des chaînes de certificat qui ne peuvent pas être analysés par AppCmd.exe, vous ne devez pas utiliser AppCmd.exe pour configurer des mappages de certificats un-à-un IIS.
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection iisClientCertificateMappingAuthenticationSection = config.GetSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "Default Web Site");
iisClientCertificateMappingAuthenticationSection["enabled"] = true;
iisClientCertificateMappingAuthenticationSection["oneToOneCertificateMappingsEnabled"] = true;
ConfigurationElementCollection oneToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.GetCollection("oneToOneMappings");
ConfigurationElement addElement = oneToOneMappingsCollection.CreateElement("add");
addElement["enabled"] = true;
addElement["userName"] = @"Username";
addElement["password"] = @"Password";
addElement["certificate"] = @"Base-64-Encoded-Certificate-Data";
oneToOneMappingsCollection.Add(addElement);
ConfigurationSection accessSection = config.GetSection("system.webServer/security/access", "Default Web Site");
accessSection["sslFlags"] = @"Ssl, SslNegotiateCert";
serverManager.CommitChanges();
}
}
}
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim iisClientCertificateMappingAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "Default Web Site")
iisClientCertificateMappingAuthenticationSection("enabled") = True
iisClientCertificateMappingAuthenticationSection("oneToOneCertificateMappingsEnabled") = True
Dim oneToOneMappingsCollection As ConfigurationElementCollection = iisClientCertificateMappingAuthenticationSection.GetCollection("oneToOneMappings")
Dim addElement As ConfigurationElement = oneToOneMappingsCollection.CreateElement("add")
addElement("enabled") = True
addElement("userName") = "Username"
addElement("password") = "Password"
addElement("certificate") = "Base-64-Encoded-Certificate-Data"
oneToOneMappingsCollection.Add(addElement)
Dim accessSection As ConfigurationSection = config.GetSection("system.webServer/security/access", "Default Web Site")
accessSection("sslFlags") = "Ssl, SslNegotiateCert"
serverManager.CommitChanges()
End Sub
End Module
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var iisClientCertificateMappingAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site");
iisClientCertificateMappingAuthenticationSection.Properties.Item("enabled").Value = true;
iisClientCertificateMappingAuthenticationSection.Properties.Item("oneToOneCertificateMappingsEnabled").Value = true;
var oneToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.ChildElements.Item("oneToOneMappings").Collection;
var addElement = oneToOneMappingsCollection.CreateNewElement("add");
addElement.Properties.Item("enabled").Value = true;
addElement.Properties.Item("userName").Value = "Username";
addElement.Properties.Item("password").Value = "Password";
addElement.Properties.Item("certificate").Value = "Base-64-Encoded-Certificate-Data";
oneToOneMappingsCollection.AddElement(addElement);
var accessSection = adminManager.GetAdminSection("system.webServer/security/access", "MACHINE/WEBROOT/APPHOST/Default Web Site");
accessSection.Properties.Item("sslFlags").Value = "Ssl, SslNegotiateCert";
adminManager.CommitChanges();
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set iisClientCertificateMappingAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/iisClientCertificateMappingAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site")
iisClientCertificateMappingAuthenticationSection.Properties.Item("enabled").Value = True
iisClientCertificateMappingAuthenticationSection.Properties.Item("oneToOneCertificateMappingsEnabled").Value = True
Set oneToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.ChildElements.Item("oneToOneMappings").Collection
Set addElement = oneToOneMappingsCollection.CreateNewElement("add")
addElement.Properties.Item("enabled").Value = True
addElement.Properties.Item("userName").Value = "Username"
addElement.Properties.Item("password").Value = "Password"
addElement.Properties.Item("certificate").Value = "Base-64-Encoded-Certificate-Data"
oneToOneMappingsCollection.AddElement(addElement)
Set accessSection = adminManager.GetAdminSection("system.webServer/security/access", "MACHINE/WEBROOT/APPHOST/Default Web Site")
accessSection.Properties.Item("sslFlags").Value = "Ssl, SslNegotiateCert"
adminManager.CommitChanges()