Configurazione dei mapping dei certificati client uno-a-uno
Sfondo
IIS 6 dispone di un'interfaccia utente per configurare ed eseguire il mapping di uno a un certificato per l'autenticazione. Agli utenti è consentito selezionare il certificato client di convalida e assegnare le credenziali utente autorizzate. Non esiste un'interfaccia utente simile in IIS 7 e versioni successive. Questa procedura dettagliata è progettata per indicare agli utenti di configurare uno a un certificato client usando l'Editor di configurazione del Pacchetto di amministrazione. Gli utenti che non dispongono di questo componente aggiuntivo possono visualizzare la sezione appendice per gli argomenti di AppCmd e gli esempi di codice C# per eseguire questa procedura dettagliata.
SCHEMA IIS 7 e versioni successive
Questo è lo schema per la funzionalità di autenticazione del mapping dei certificati client IIS in IIS 7 e versioni successive.
<sectionSchema name="system.webServer/security/authentication/iisClientCertificateMappingAuthentication">
<attribute name="enabled" type="bool" defaultValue="false" />
<attribute name="oneToOneCertificateMappingsEnabled" type="bool" defaultValue="true" />
<element name="oneToOneMappings">
<collection addElement="add" clearElement="clear">
<attribute name="enabled" type="bool" defaultValue="true" />
<attribute name="userName" type="string" />
<attribute name="password" type="string" encrypted="true" />
<attribute name="certificate" type="string" required="true" isUniqueKey="true" />
</collection>
</element>
</sectionSchema>
Prerequisiti
Questi sono i prerequisiti necessari per questa procedura dettagliata. Non sto coprendo come creare o fare queste cose.
- Modulo di mapping dei certificati client IIS installato
- Un sito Web con un'associazione HTTPS, configurata correttamente
- Un certificato Base 64 (file con estensione cer). [Nota: può essere qualsiasi certificato a 64 bit valido, ma deve essere in formato file]
- Installato un certificato client in un client
- Installazione di IIS 7 Administration Pack Technical Preview 2
Passaggio 1: Ottenere il BLOB del certificato
L'elemento dell'insieme oneToOneMappings ha un attributo denominato certificate. Il valore richiesto per questo attributo non è il certificato, ma il BLOB di certificati effettivo. Ecco come estrarlo.
Fare clic con il pulsante destro del mouse sul file cer.
Selezionare Apri con... nel menu di scelta rapida
Selezionare Blocco note dall'elenco di Altri programmi e fare clic su OK. [Nota: Il Blocco note potrebbe essere nascosto sotto un elenco a discesa nella visualizzazione elenco Vista/Windows 2008]
Questo è ciò che dovrebbe essere visualizzato nel Blocco note:
-----BEGIN CERTIFICATE----- MIIEfjCCA2agAwIBAgIKFW1IXAAAAAAAAjANBgkqhkiG9w0BAQUFADAbMRkwFwYD VQQDExBJSVNSZW1vdGVNZ3JUZXN0MB4XDTA4MDIxMTIxNTk1NloXDTA5MDIxMTIy MDk1NlowaDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNV BAcTB1JlZG1vbmQxDTALBgNVBAoTBE1TRlQxDDAKBgNVBAsTA0lJUzEVMBMGA1UE AxMMUkxVQ0VSTzItSUlTMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3611j 34q2qQgHa7ao11TcQMDYlJMrqET05MWFY1/Vso+leujLoIGTfdHOuz4IBVoeUE+y mlL8r53s2BQeVFROnDtg4Jko1zJsz7AUAnQNBk/GYA1AHYmhY79Z0p1KXW/wSTJB tdUn732GQOqYf4wY8jOD2zUJDUG4HXm6ib8ajwIDAQABo4IB+TCCAfUwDgYDVR0P AQH/BAQDAgTwMBMGA1UdJQQMMAoGCCsGAQUFBwMBMHgGCSqGSIb3DQEJDwRrMGkw DgYIKoZIhvcNAwICAgCAMA4GCCqGSIb3DQMEAgIAgDALBglghkgBZQMEASowCwYJ YIZIAWUDBAEtMAsGCWCGSAFlAwQBAjALBglghkgBZQMEAQUwBwYFKw4DAgcwCgYI KoZIhvcNAwcwHQYDVR0OBBYEFHbHA+HwZcIrslklj1W3O23UFrBgMB8GA1UdIwQY MBaAFMxzlGbmkp2+phhDg7TPfi83d7UVMHMGA1UdHwRsMGowaKBmoGSGL2h0dHA6 Ly9paXNzYjMwNS9DZXJ0RW5yb2xsL0lJU1JlbW90ZU1nclRlc3QuY3JshjFmaWxl Oi8vXFxpaXNzYjMwNVxDZXJ0RW5yb2xsXElJU1JlbW90ZU1nclRlc3QuY3JsMIGe BggrBgEFBQcBAQSBkTCBjjBEBggrBgEFBQcwAoY4aHR0cDovL2lpc3NiMzA1L0Nl cnRFbnJvbGwvaWlzc2IzMDVfSUlTUmVtb3RlTWdyVGVzdC5jcnQwRgYIKwYBBQUH MAKGOmZpbGU6Ly9cXGlpc3NiMzA1XENlcnRFbnJvbGxcaWlzc2IzMDVfSUlTUmVt b3RlTWdyVGVzdC5jcnQwDQYJKoZIhvcNAQEFBQADggEBAEsSkcx0re36IL80UphJ w/srR3LBsy8sfwqxBMzMTdF7k6jYtUVpn3D2Dd4JXXVOaEVud9YNn9pr6xJL4t79 Zh+hJzIPA5pQLbccx4vjWB4cWEYxzcoKYCuUdZrfPFXO1a5kQAj8IZ0/6bhMceyR Z7dRDoaIuAGQLFAlC/KjIBCemDi54MlWtvATQ8bmiRuEOWeneK2Vd2e0fxyezk05 dRqa8DEC74CQN4rQuz395ECm+M/hQnN+dHOygV8n9swd0bdNq8qypwfVUes5HIpj LFmKTuGyFSVj7jv+64oTxvxtYX2QFp9q6Bi+qj0uyrX8Xjxy5rPSVPEfnxPCBg58 RCI= -----END CERTIFICATE-----
Rimuovere -----BEGIN CERTIFICATE----- e -----END CERTIFICATE----
Formattare il BLOB del certificato in modo che sia una singola riga.
Salvare il file come clientCertBlob.txt
Passaggio 2: Abilitazione dell'autenticazione del mapping dei certificati client IIS e uno a un mapping dei certificati per un sito Web
I passaggi successivi illustrano come abilitare la funzionalità Autenticazione mapping certificati client, One to One Certificate Mapping e aggiunta una voce di mapping.
- Avviare Inetmgr, l'interfaccia utente di Gestione IIS
- Selezionare il sito Web SSL configurato e aprire l'editor di configurazione
- Digitare "system.webServer/security/authentication/iisClientCertificateMappingAuthentication" nell'elenco a discesa Sezione .
- Selezionare il campo abilitato e modificare il valore in true
- Selezionare la voce della griglia delle proprietà oneToOneCertificateMappingsEnabled e impostare il valore su true
- Selezionare la voce della griglia delle proprietà oneToOneMappings e fare clic su Modifica elementi nel riquadro attività Azioni
- Fare clic su Aggiungi nell'elenco attività Editor raccolta
- Copiare il BLOB del certificato a stringa singola dall'alto e incollarlo nel campo certificato
- Impostare userName e password che i client verranno autenticati come .
- Impostare il campo abilitato su true
- Chiudi editor raccolta
- Fare clic su Applica nel riquadro attività Azioni [Nota: Fare clic su Generazione script prima di fare clic su Applica per ottenere script per questo processo]
Al termine, il server verrà configurato per gestire l'autenticazione del mapping dei certificati client IIS con una sola voce di mapping dei certificati.
Passaggio 3: Abilitazione dell'autenticazione del certificato client per un sito Web tramite SSL
Dopo aver creato un mapping e aver abilitato la funzionalità, è necessario configurare un sito per l'uso dei certificati client.
- Dall'interno di Inetmgr, l'interfaccia utente di Gestione IIS selezionare il sito Web SSL che si vuole usare i certificati client
- Selezionare il modulo dell'interfaccia utente SSL
- In Certificati client: selezionare il pulsante di opzione Accetta
- Fare clic su Applica nel riquadro attività Azioni
Il sito Web è ora configurato per accettare e autenticare i client in base ai certificati client.
Passaggio 4: Verifica di tutto il funzionamento
Il client che sta tentando di accedere alla pagina Web SSL richiede che il certificato client sia installato correttamente. Se un client tenta di richiedere una pagina senza il certificato 401 verrà servito. Una volta installato correttamente il certificato client, la pagina verrà servita come di consueto.
Provare a usare diverse combinazioni di regole di autorizzazione in base alle proprie esigenze.
Riepilogo
Sono stati configurati i mapping dei certificati client IIS e un solo mapping di un certificato a uno.
Appendice
Questi sono i frammenti di codice per eseguire la procedura dettagliata 2 e 3. Tutto questo è stato generato usando la generazione di script dell'editor di configurazione.
Istruzioni specifiche di AppCmd
appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/iisClientCertificateMappingAuthentication
/enabled:"True" /oneToOneCertificateMappingsEnabled:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/iisClientCertificateMappingAuthentication
/+"oneToOneMappings.[userName='testUser',password='securePassWord!1',certificate='CERTIFICATE_BLOB']" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/access /sslFlags:"Ssl, SslNegotiateCert, Ssl128" /commit:apphost
Codice 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["userName"] = @"testUser";
addElement["password"] = @"securePassWord!1";
addElement["certificate"] = @"CERTIFICATE_BLOB";
oneToOneMappingsCollection.Add(addElement);
serverManager.CommitChanges();
}
}
}
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 accessSection = config.GetSection("system.webServer/security/access", "Default Web Site");
accessSection["sslFlags"] = @"Ssl, SslNegotiateCert, Ssl128";
serverManager.CommitChanges();
}
}
}