Autenticazione <del mapping dei certificati client IISClientCertificateMappingAuthentication>
Panoramica
L'elemento <iisClientCertificateMappingAuthentication>
dell'elemento <authentication>
specifica le impostazioni per l'autenticazione del mapping dei certificati client tramite IIS.
Esistono due metodi diversi per il mapping dei certificati client tramite IIS:
- Mapping uno-a-uno : questi mapping corrispondono a singoli certificati client a singoli account utente uno-a-uno; viene eseguito il mapping di ogni certificato client a un account utente.
- Mapping molti-a-uno : questi mapping corrispondono a più certificati a un account utente in base ai sottocampi nei certificati client.
Nota
L'autenticazione di mapping dei certificati client tramite IIS differisce dal mapping dei certificati client usando Active Directory nei modi seguenti:
- Autenticazione mapping certificati client tramite Active Directory : questo metodo di autenticazione richiede che il server IIS 7 e il computer client siano membri di un dominio Active Directory e che gli account utente siano archiviati in Active Directory. Questo metodo di autenticazione del mapping dei certificati client ha ridotto le prestazioni a causa del round trip al server Active Directory.
- Autenticazione del mapping dei certificati client IIS : questo metodo di autenticazione non richiede Active Directory e pertanto funziona con i server autonomi. Questo metodo di autenticazione del mapping dei certificati client ha migliorato le prestazioni, ma richiede più configurazione e accesso ai certificati client per creare mapping.
Per altre informazioni, vedere Configurazione dell'autenticazione in IIS 7.0 nel sito Web Microsoft TechNet.
Compatibilità
Versione | Note |
---|---|
IIS 10.0 | L'elemento <iisClientCertificateMappingAuthentication> non è stato modificato in IIS 10.0. |
IIS 8,5 | L'elemento <iisClientCertificateMappingAuthentication> non è stato modificato in IIS 8.5. |
IIS 8,0 | L'elemento <iisClientCertificateMappingAuthentication> non è stato modificato in IIS 8.0. |
IIS 7,5 | L'elemento <iisClientCertificateMappingAuthentication> non è stato modificato in IIS 7.5. |
IIS 7.0 | L'elemento <iisClientCertificateMappingAuthentication> dell'elemento <authentication> è stato introdotto in IIS 7.0. |
IIS 6.0 | L'elemento <iisClientCertificateMappingAuthentication> sostituisce l'oggetto metabase IIS 6.0 IIsCertMapper . |
Installazione
L'elemento <iisClientCertificateMappingAuthentication>
non è disponibile nell'installazione predefinita di IIS 7 e versioni successive. Per installarlo, seguire questa procedura.
Windows Server 2012 o Windows Server 2012 R2
- Sulla barra delle applicazioni fare clic su Server Manager.
- In Server Manager fare clic sul menu Gestisci e quindi su Aggiungi ruoli e funzionalità.
- Nella procedura guidata Aggiungi ruoli e funzionalità fare clic su Avanti. Selezionare il tipo di installazione e fare clic su Avanti. Selezionare il server di destinazione e fare clic su Avanti.
- Nella pagina Ruoli server espandere Server Web (IIS), server Web, sicurezzae quindi selezionare Autenticazione mapping certificati client IIS. Fare clic su Avanti.
- Nella pagina Selezione funzionalità fare clic su Avanti.
- Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
- Nella pagina Risultati fare clic su Chiudi.
Windows 8 o Windows 8.1
- Nella schermata Start spostare il puntatore fino all'angolo inferiore sinistro, fare clic con il pulsante destro del mouse sul pulsante Start e quindi scegliere Pannello di controllo.
- In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
- Espandere Internet Information Services, servizi Web a livello mondiale, sicurezza, quindi selezionare Autenticazione mapping certificati client IIS.
- Fare clic su OK.
- Fare clic su Close.
Windows Server 2008 o Windows Server 2008 R2
- Sulla barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione, quindi fare clic su Server Manager.
- Nel riquadro della gerarchia Server Manager espandere Ruoli, quindi fare clic su Server Web (IIS).
- Nel riquadro Server Web (IIS) scorrere fino alla sezione Servizi ruolo e quindi fare clic su Aggiungi servizi ruolo.
- Nella pagina Selezione servizi ruolo della Procedura guidata Aggiungi servizi ruolo selezionare Autenticazione mapping certificati client IIS e quindi fare clic su Avanti.
- Nella pagina Conferma selezioni per l'installazione fare clic su Installa.
- Nella pagina Risultati fare clic su Chiudi.
Windows Vista o Windows 7
- Sulla barra delle applicazioni fare clic su Start e quindi su Pannello di controllo.
- In Pannello di controllo fare clic su Programmi e funzionalità e quindi su Attiva o disattiva funzionalità di Windows.
- Espandere Internet Information Services, quindi selezionare Autenticazione mapping certificati client IIS, quindi fare clic su OK.
Procedure
Non è disponibile alcuna interfaccia utente per la configurazione dell'autenticazione del mapping dei certificati client IIS per IIS 7. Per esempi di come configurare l'autenticazione di mapping dei certificati client IIS a livello di codice, vedere la sezione Esempi di codice di questo documento.
Configurazione
L'elemento <iisClientCertificateMappingAuthentication>
dell'elemento <authentication>
può essere configurato a livello di server e sito.
Attributi
Attributo | Descrizione | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
defaultLogonDomain |
Attributo String facoltativo. Specifica il dominio predefinito utilizzato dal server per autenticare gli utenti. |
||||||||||
enabled |
Attributo booleano facoltativo. Specifica se l'autenticazione di mapping dei certificati client tramite IIS è abilitata. Il valore predefinito è false . |
||||||||||
logonMethod |
Attributo di enumerazione facoltativo. L'attributo logonMethod può essere uno dei valori possibili seguenti. Per altre informazioni su questi valori, vedere LogonUser. Il valore predefinito è ClearText .
|
||||||||||
manyToOneCertificateMappingsEnabled |
Attributo booleano facoltativo. Specifica se il mapping molti-a-uno è abilitato Il valore predefinito è true . |
||||||||||
oneToOneCertificateMappingsEnabled |
Attributo booleano facoltativo. Specifica se è abilitato il mapping uno-a-uno Il valore predefinito è true . |
Elementi figlio
Elemento | Descrizione |
---|---|
manyToOneMappings |
Elemento facoltativo. Esegue il mapping dei certificati client a un set di criteri con caratteri jolly che autenticano i certificati e assegnano un account utente. |
oneToOneMappings |
Elemento facoltativo. Specifica i mapping dei certificati client uno a uno. |
Esempio di configurazione
Nell'esempio di configurazione seguente vengono eseguite le azioni seguenti per il sito Web predefinito:
- Abilita l'autenticazione del mapping dei certificati client IIS usando il mapping di certificati molti-a-uno.
- Crea una regola di mapping dei certificati molti-a-uno per un account utente in base al campo dell'organizzazione nell'oggetto del certificato client corrispondente a Contoso.
- Configura il sito per richiedere SSL e negoziare i certificati client.
<location path="Default Web Site">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="false" />
<anonymousAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<basicAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="true"
manyToOneCertificateMappingsEnabled="true">
<manyToOneMappings>
<add name="Contoso Employees"
enabled="true"
permissionMode="Allow"
userName="Username"
password="[enc:AesProvider:57686f6120447564652c2049495320526f636b73:enc]">
<rules>
<add certificateField="Subject"
certificateSubField="O"
matchCriteria="Contoso"
compareCaseSensitive="true" />
</rules>
</add>
</manyToOneMappings>
</iisClientCertificateMappingAuthentication>
</authentication>
<access sslFlags="Ssl, SslNegotiateCert" />
</security>
</system.webServer>
</location>
Nell'esempio di configurazione seguente viene abilitata l'autenticazione del mapping dei certificati client IIS usando il mapping di certificati uno-a-uno per il sito Web predefinito, viene creato un mapping di certificati uno-a-uno per un account utente e viene configurato il sito per richiedere SSL e negoziare i certificati client.
<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>
Come recuperare la stringa con codifica Base 64 da un certificato client
Nota
Per recuperare i dati di un certificato con codifica Base 64 per tutti gli esempi in questo argomento, è possibile esportare un certificato seguendo questa procedura:
Fare clic su Start, quindi su Esegui.
Immettere MMC e quindi fare clic su OK.
Quando si apre Microsoft Management Console, fare clic su File, quindi su Aggiungi/Rimuovi snap-in.
Nella finestra di dialogo Aggiungi o Rimuovi snap-in :
- Evidenziare Certificati nell'elenco degli snap-in disponibili, quindi fare clic su Aggiungi.
- Scegliere di gestire i certificati per Account utente personale, quindi fare clic su Fine.
- Fare clic su OK per chiudere la finestra di dialogo.
In the Microsoft Management Console:
- Espandere Certificati - Utente corrente, quindi Personale, quindi Certificati.
- Nell'elenco dei certificati fare clic con il pulsante destro del mouse sul certificato da esportare, quindi scegliere Tutte le attività, quindi fare clic su Esporta.
Quando si apre l'Esportazione guidata certificati :
- Fare clic su Avanti.
- Scegliere No, non esportare la chiave privata, quindi fare clic su Avanti.
- Scegliere Base-64 con codifica X.509 9 (. CER) per il formato di esportazione, quindi fare clic su Avanti.
- Scegliere di salvare il certificato sul desktop come MyCertificate.cer, quindi fare clic su Avanti.
- Fare clic su Fine; verrà visualizzata una finestra di dialogo che indica che l'esportazione è riuscita.
Chiudere Microsoft Management Console.
Aprire il file MyCertificate.cer esportato usando Il Blocco note di Windows:
- Rimuovere "-----BEGIN CERTIFICATE-----" dall'inizio del testo.
- Rimuovere "-----END CERTIFICATE-----" dalla fine del testo.
- Concatenare tutte le righe in una singola riga di testo: si tratta dei dati del certificato con codifica Base 64 che verranno usati per tutti gli esempi in questo argomento.
Codice di esempio
Gli esempi di codice seguenti eseguono le azioni seguenti per il sito Web predefinito:
- Abilitare l'autenticazione del mapping dei certificati client IIS usando il mapping di certificati molti-a-uno.
- Creare una regola di mapping dei certificati molti-a-uno per un account utente in base al campo dell'organizzazione nell'oggetto del certificato client corrispondente a Contoso.
- Configurare il sito per richiedere SSL e negoziare i certificati client.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/iisClientCertificateMappingAuthentication /enabled:"True" /manyToOneCertificateMappingsEnabled:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/iisClientCertificateMappingAuthentication /+"manyToOneMappings.[name='Contoso Employees',enabled='True',permissionMode='Allow',userName='Username',password='Password']" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/iisClientCertificateMappingAuthentication /+"manyToOneMappings.[name='Contoso Employees'].rules.[certificateField='Subject',certificateSubField='O',matchCriteria='Contoso',compareCaseSensitive='True']" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/access /sslFlags:"Ssl, SslNegotiateCert" /commit:apphost
Nota
È necessario assicurarsi di impostare il parametro commit su apphost
quando si usa AppCmd.exe per configurare queste impostazioni. In questo modo le impostazioni di configurazione vengono confermate nella sezione relativa al percorso appropriato nel file ApplicationHost.config.
C#
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["manyToOneCertificateMappingsEnabled"] = true;
ConfigurationElementCollection manyToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.GetCollection("manyToOneMappings");
ConfigurationElement addElement = manyToOneMappingsCollection.CreateElement("add");
addElement["name"] = @"Contoso Employees";
addElement["enabled"] = true;
addElement["permissionMode"] = @"Allow";
addElement["userName"] = @"Username";
addElement["password"] = @"Password";
ConfigurationElementCollection rulesCollection = addElement.GetCollection("rules");
ConfigurationElement addElement1 = rulesCollection.CreateElement("add");
addElement1["certificateField"] = @"Subject";
addElement1["certificateSubField"] = @"O";
addElement1["matchCriteria"] = @"Contoso";
addElement1["compareCaseSensitive"] = true;
rulesCollection.Add(addElement1);
manyToOneMappingsCollection.Add(addElement);
ConfigurationSection accessSection = config.GetSection("system.webServer/security/access", "Default Web Site");
accessSection["sslFlags"] = @"Ssl, SslNegotiateCert";
serverManager.CommitChanges();
}
}
}
VB.NET
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("manyToOneCertificateMappingsEnabled") = True
Dim manyToOneMappingsCollection As ConfigurationElementCollection = iisClientCertificateMappingAuthenticationSection.GetCollection("manyToOneMappings")
Dim addElement As ConfigurationElement = manyToOneMappingsCollection.CreateElement("add")
addElement("name") = "Contoso Employees"
addElement("enabled") = True
addElement("permissionMode") = "Allow"
addElement("userName") = "Username"
addElement("password") = "Password"
Dim rulesCollection As ConfigurationElementCollection = addElement.GetCollection("rules")
Dim addElement1 As ConfigurationElement = rulesCollection.CreateElement("add")
addElement1("certificateField") = "Subject"
addElement1("certificateSubField") = "O"
addElement1("matchCriteria") = "Contoso"
addElement1("compareCaseSensitive") = True
rulesCollection.Add(addElement1)
manyToOneMappingsCollection.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
JavaScript
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("manyToOneCertificateMappingsEnabled").Value = true;
var manyToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.ChildElements.Item("manyToOneMappings").Collection;
var addElement = manyToOneMappingsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "Contoso Employees";
addElement.Properties.Item("enabled").Value = true;
addElement.Properties.Item("permissionMode").Value = "Allow";
addElement.Properties.Item("userName").Value = "Username";
addElement.Properties.Item("password").Value = "Password";
var rulesCollection = addElement.ChildElements.Item("rules").Collection;
var addElement1 = rulesCollection.CreateNewElement("add");
addElement1.Properties.Item("certificateField").Value = "Subject";
addElement1.Properties.Item("certificateSubField").Value = "O";
addElement1.Properties.Item("matchCriteria").Value = "Contoso";
addElement1.Properties.Item("compareCaseSensitive").Value = true;
rulesCollection.AddElement(addElement1);
manyToOneMappingsCollection.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();
VBScript
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("manyToOneCertificateMappingsEnabled").Value = True
Set manyToOneMappingsCollection = iisClientCertificateMappingAuthenticationSection.ChildElements.Item("manyToOneMappings").Collection
Set addElement = manyToOneMappingsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "Contoso Employees"
addElement.Properties.Item("enabled").Value = True
addElement.Properties.Item("permissionMode").Value = "Allow"
addElement.Properties.Item("userName").Value = "Username"
addElement.Properties.Item("password").Value = "Password"
Set rulesCollection = addElement.ChildElements.Item("rules").Collection
Set addElement1 = rulesCollection.CreateNewElement("add")
addElement1.Properties.Item("certificateField").Value = "Subject"
addElement1.Properties.Item("certificateSubField").Value = "O"
addElement1.Properties.Item("matchCriteria").Value = "Contoso"
addElement1.Properties.Item("compareCaseSensitive").Value = True
rulesCollection.AddElement(addElement1)
manyToOneMappingsCollection.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()
Gli esempi di codice seguenti consentono l'autenticazione del mapping dei certificati client IIS usando il mapping di certificati uno a uno per il sito Web predefinito, creare un unico mapping di certificati uno-a-uno per un account utente e configurare il sito per richiedere SSL e negoziare i certificati client.
Nota
Per recuperare i dati del certificato con codifica Base 64 per gli esempi di codice elencati di seguito, è possibile esportare un certificato seguendo i passaggi elencati nella sezione Dettagli configurazione di questo documento.
AppCmd.exe
Nota
A causa dei caratteri nelle stringhe di certificato che non possono essere analizzate da AppCmd.exe, non è consigliabile usare AppCmd.exe per configurare i mapping dei certificati uno-a-uno di IIS.
C#
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();
}
}
}
VB.NET
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
JavaScript
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();
VBScript
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()