Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Çoka Bir istemci sertifikası eşlemelerini yapılandırmak için Microsoft Internet Information Services'teki (IIS) Yapılandırma Düzenleyicisi özelliğinin nasıl kullanılacağı açıklanır.
Özgün ürün sürümü: Internet Information Services
Özgün KB numarası: 2026113
Giriş
Çoka Bir İstemci Sertifikası eşlemesi, istemci sertifikası kullanıcı kimlik doğrulaması için kullanıldığında iis tarafından son kullanıcıyı bir Windows hesabıyla ilişkilendirmek için kullanılır. Kullanıcının oturumu IIS tarafından eşlenen bu Windows hesabı bağlamında yürütülür. Beklendiği gibi çalışmak için sertifikadan hesaba eşlemenin IIS'de doğru yapılandırıldığından emin olmanız gerekir.
IIS'nin geçerli sürümünde, BIRe Bir veya Çoka Bir sertifika eşlemeleri için IIS Yöneticisi Kullanıcı Arabirimi mevcut değildir. Bu makalede, Çoka Bir istemci sertifikası eşlemelerini yapılandırmak için IIS'nin Yapılandırma Düzenleyicisi özelliğinin kullanılması anlatılır.
Not
Yapılandırma Düzenleyicisi'ni kullanarak Bire Bir istemci sertifikası eşlemelerini yapılandırma hakkında bilgi için bkz . Bire Bir İstemci Sertifikası Eşlemelerini Yapılandırma.
IIS şeması
IIS'deki IIS İstemci Sertifika Eşlemesi kimlik doğrulaması özelliğinin şeması aşağıdadır:
<sectionSchema name="system.webServer/security/authentication/iisClientCertificateMappingAuthentication">
<attribute name="enabled" type="bool" defaultValue="false" />
<attribute name="manyToOneCertificateMappingsEnabled" type="bool" defaultValue="true" />
...
<element name="manyToOneMappings">
<collection addElement="add" clearElement="clear">
<attribute name="name" type="string" required="true" isUniqueKey="true"
validationType="nonEmptyString" />
<attribute name="description" type="string" />
<attribute name="enabled" type="bool" defaultValue="true"/>
<attribute name="permissionMode" type="enum" defaultValue="Allow">
<enum name="Allow" value="1"/>
<enum name="Deny" value="2" />
</attribute>
<element name="rules">
<collection addElement="add" clearElement="clear">
<attribute name="certificateField" type="enum" required="true" isCombinedKey="true">
<enum name="Subject" value="1" />
<enum name="Issuer" value="2" />
</attribute>
<attribute name="certificateSubField" type="string" caseSensitive="true"
required="true" isCombinedKey="true" />
<attribute name="matchCriteria" type="string" caseSensitive="true"
required="true" isCombinedKey="true" />
<attribute name="compareCaseSensitive" type="bool" isCombinedKey="true" defaultValue="true" />
</collection>
</element>
<attribute name="userName" type="string" validationType="nonEmptyString" />
<attribute name="password" type="string" caseSensitive="true" encrypted="true"
defaultValue="[enc:AesProvider::enc]" />
</collection>
</element>
...
</sectionSchema>
Önkoşullar
Bu kılavuz için gereken önkoşullar şunlardır:
- IIS sunucusuna IIS İstemci Sertifikası Eşleme modülünü yüklediniz.
- Bir web sitesi, Güvenli Yuva Katmanı (SSL) bağlantılarını kabul edebilen bir Köprü Metni Aktarım Protokolü Güvenli (HTTPS) bağlaması ile yapılandırılır.
- İstemcide yüklü bir istemci sertifikanız var.
Yapılandırma Düzenleyicisi tarafından sertifika eşlemesini yapılandırma
IIS yöneticisini başlatın ve istemci sertifikası kimlik doğrulaması için yapılandırılacak web sitesini seçin.
Özellikler Görünümü'nde Yönetim bölümünün altında Yapılandırma Düzenleyicisi'ni seçin.
system.webServer/security/authentication/iisClientCertificateMappingAuthentication
Aşağıdaki görüntüde gösterildiği gibi açılan kutuya gidin:Burada Çoka Bir veya Bire Bir sertifika eşlemelerini yapılandırmak için bir pencere göreceksiniz. Aşağıdaki kullanıcı arabirimi, tüm eşleme yapılandırmalarını ayarlayabileceğiniz Yapılandırma Düzenleyicisi aracılığıyla sağlanır.
Bu grafik kullanıcı arabirimi (GUI) aracılığıyla özellikleri değiştirin.
- Etkin ayarını True olarak ayarlayın.
- manyToOneCertificateMappingsEnabled değerini True olarak ayarlayın.
- ÇokOneMappings'i seçin ve üç nokta düğmesini seçerek eşlemeleri yapılandırmak için yeni bir pencere açın.
Bu yeni pencerenin altında yeni bir öğe eklemek için öğesini seçin. Aşağıdaki görüntüde gösterildiği gibi pencere içindeki özellikleri değiştirebilirsiniz:
Kurallar için üç nokta düğmesini seçin. Bu seçenek, sertifika özelliklerine göre eşleştirme için birden çok desen ekleme seçeneği sunar.
Bu örnek görüntülerde, sertifikayı eşlemeye yönelik kurallar için iki giriş vardır.
İlk olarak, sertifikada Konu ve Veren alanları vardır. İkincisi, sertifikayı mydomain\testuser hesabıyla eşlemek için matchcriteria özelliği vardır.
Aşağıdaki görüntüde, belirli bir Windows hesabı için son eşleme gösterilmektedir. Gördüğünüz gibi, bu hesap için kurallar için iki giriş vardır.
Benzer şekilde, sertifikadaki Veren ve Konu alanlarına göre hesaplar için başka eşlemeleriniz de olabilir.
sertifika eşlemesini APPCMD.exe yapılandırma
Şimdiye kadar gösterilen, yapılandırmayı kolayca ayarlamak için bir grafik arabirim sağlayan Yapılandırma Düzenleyicisi kullanılarak elde edilmiştir. Komutları kullanarak APPCMD.exe
aynı şeyi elde edebilirsiniz ve aslında Yapılandırma Düzenleyicisi arka planda aynı şeyi yapar ve bu ayarları ApplicationHost.config dosyasına ekler.
Yapılandırma Düzenleyicisi ayrıca bu komutları el ile çalıştırma seçeneği sunar ve bunu kullanıcı arabiriminin içinden gerçekleştirmek için betikleri oluşturur:
Bu kod parçacıkları, sertifika eşlemesini yapılandırmak için aynı adımları gerçekleştirir. Bunlar, Yapılandırma Düzenleyicisi'nin Betik Oluşturma özelliği kullanılarak oluşturulmuştur.
AppCmd komutları
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='My 1st Mapping',description='1st User Mapping',userName='mydomain\testuser',password='abcdef']" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/iisClientCertificateMappingAuthentication /+"manyToOneMappings.[name='My 1st Mapping',description='1st User Mapping',userName='mydomain\testuser',password='abcdef'].rules.[certificateField='Subject',certificateSubField='CN',matchCriteria='Test User']" /commit:apphost
C# kodu
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"] = @"My 1st Mapping";
addElement["description"] = @"1st User Mapping";
addElement["userName"] = @"mydomain\testuser";
addElement["password"] = @"abcdef";
ConfigurationElementCollection rulesCollection = addElement.GetCollection("rules");
ConfigurationElement addElement1 = rulesCollection.CreateElement("add");
addElement1["certificateField"] = @"Subject";
addElement1["certificateSubField"] = @"CN";
addElement1["matchCriteria"] = @"Test User";
rulesCollection.Add(addElement1);
manyToOneMappingsCollection.Add(addElement);
serverManager.CommitChanges();
}
}
}
Betik Oluşturma (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 = "My 1st Mapping";
addElement.Properties.Item("description").Value = "1st User Mapping";
addElement.Properties.Item("userName").Value = "mydomain\\testuser";
addElement.Properties.Item("password").Value = "abcdef";
var rulesCollection = addElement.ChildElements.Item("rules").Collection;
var addElement1 = rulesCollection.CreateNewElement("add");
addElement1.Properties.Item("certificateField").Value = "Subject";
addElement1.Properties.Item("certificateSubField").Value = "CN";
addElement1.Properties.Item("matchCriteria").Value = "Test User";
rulesCollection.AddElement(addElement1);
manyToOneMappingsCollection.AddElement(addElement);
adminManager.CommitChanges();