Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Übersicht
Mit dem Element <binding>
des Elements <bindings>
können Sie die informationen konfigurieren, die für Anforderungen für die Kommunikation mit einer Website erforderlich sind.
Sie können Bindungsinformationen konfigurieren, wenn Sie eine Website erstellen, oder Sie können die Bindungsinformationen bearbeiten, nachdem Sie die Website erstellt haben. Bindungsinformationen umfassen das Protokoll, das Clients für die Kommunikation mit dem Standort, der IP-Adresse des Standorts, der Portnummer und einem Hostheader verwenden.
Das Element <binding>
enthält zwei Attribute zum Konfigurieren der Bindungsinformationen: bindingInformation und Protokoll. Das Attribut bindingInformation enthält die IP-Adresse, die Portnummer und optional den Hostheader für die Website. Das Attribut Protokoll definiert das Protokoll, das für die Kommunikation mit der Website verwendet werden soll.
Sie können die Sammlung von Bindungen für eine Website mithilfe des IIS-Managers konfigurieren, indem Sie die Website auswählen und die Links Bindungen ... oder Erweiterte Einstellungen ... im Bereich Aktionen verwenden oder indem Sie im Kontextmenü der Website auf Bindungen bearbeiten klicken.
MIT IIS 8.0 oder höher können Sie Mithilfe der Zertifikate in einem zentralisierten Zertifikatspeicher unter Windows Server 2012 Sicherheit für Websites bereitstellen. Weitere Informationen finden Sie unter IIS 8.0 unterstützt zentralisierte SSL-Zertifikate: SSL-Skalierbarkeit und Verwaltbarkeit .
Mit dem Element Bindung können Sie den Typ der Bindung angeben, die für SSL-Zertifikate (Secure Sockets Layer) verwendet wird.
Kompatibilität
Version | Hinweise |
---|---|
(IIS 10.0 UND HÖHER) | Das <binding> Element wurde in IIS 10.0 nicht geändert. |
IIS 8.5 | Das <binding> Element wurde in IIS 8.5 nicht geändert. |
IIS 8.0 | Das Attribut sslFlags wurde hinzugefügt, um die Bindung anzugeben, die für Secure Sockets Layer-Zertifikate verwendet wird. |
IIS 7.5 | Das <binding> -Element wurde in IIS 7.5 nicht geändert. |
IIS 7.0 | Das <binding> -Element der <bindings> -Auflistung wurde in IIS 7.0 eingeführt. |
IIS 6.0 | Die Sammlung <bindings> ersetzt Abschnitte der Eigenschaft ServerBindings im IIS 6.0 IIsWebServer-Metabasisobjekt. |
Setup
Das <binding>
-Element ist in der Standardinstallation von IIS 7 und höheren Versionen enthalten.
So installieren Sie einen zentralisierten Zertifikatspeicher
In IIS 8 und höher können die Zertifikate in einem zentralisierten Zertifikatspeicher verwendet werden, um Sicherheit für eine Website bereitzustellen. Um diesen Speicher auf Ihrem Webserver mit Windows Server 2012 oder höher zu verwenden, müssen Sie die Rolle des zentralisierten SSL-Zertifikatspeichers installieren. Gehen Sie wie folgt vor, um dies mit bereits installierter IIS zu tun:
- Drücken Sie die Windows-Taste und klicken Sie dann auf Server-Manager.
- Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
- Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf die Seite Bevor Sie beginnen, wählen Sie den Installationstyp aus und klicken Sie dann auf der Seite Installationstyp auf Weiter. Wählen Sie den Speicherort für die Installation aus und klicken Sie auf den Seiten Serverauswahl auf Weiter.
- Stellen Sie auf der Seite Serverrollen sicher, dass Webserver (IIS) ausgewählt ist, und erweitern Sie diesen Eintrag. Erweitern Sie Webserver und wählen und erweitern Sie dann Sicherheit.
- Wählen Sie Zentralisierter SSL-Zertifikatspeicher aus und klicken Sie dann auf Weiter.
- Klicken Sie auf der Seite Features auf Weiter.
- Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
- Klicken Sie auf der Seite Ergebnisse auf Schließen.
Gewusst wie
Hinzufügen von Bindungsinformationen zu einer Website
Öffnen Sie den Internet Information Services (IIS) Manager:
Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:
- Klicken Sie der der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows 8 oder Windows 8.1 verwenden:
- Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
- Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:
- Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
Wenn Sie Windows Vista oder Windows 7 verwenden:
- Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
- Doppelklicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
Erweitern Sie im Bereich Verbindungen den Servernamen, erweitern Sie Websites, und klicken Sie dann auf die Website, auf der Sie die Bindungen konfigurieren möchten.
Klicken Sie im Bereich Aktionen auf Bindungen ....
Fügen Sie im Dialogfeld Websitebindung hinzufügen die Bindungsinformationen hinzu, und klicken Sie dann auf OK.
Erstellen eines zentralisierten Zertifikatspeichers
- Drücken Sie die Schaltfläche Start und klicken Sie dann auf Server-Manager. Klicken Sie in Server-Manager auf Tools und klicken Sie dann auf Internetinformationsdienste-Manager.
- Wählen Sie im Bereich Verbindungen den Servernamen aus.
- Doppelklicken Sie auf der Startseite unter dem Bereich Verwaltung auf zentralisierte Zertifikate.
- Klicken Sie im Bereich Aktionen auf Featureeinstellungen bearbeiten.
- Wählen Sie Zentralisierte Zertifikate aktivieren aus und geben Sie einen physischen Pfad ein. Geben Sie einen Benutzernamen für den Pfad ein, geben Sie ein Kennwort für den Pfad ein, und bestätigen Sie das Kennwort. Klicken Sie auf OK.
Konfiguration
Sie können <binding>
-Elemente innerhalb des <bindings>
-Elements für jede Website in der Datei ApplicationHost.config hinzufügen. Jede Website muss über mindestens eine HTTP- oder HTTPS-Bindung verfügen, damit sie über das Internet angezeigt werden kann.
Attribute
Attribut | Beschreibung |
---|---|
bindingInformation |
Erforderliches Zeichenfolgenattribut. Gibt Informationen an, die mit einer Website kommuniziert werden sollen. Beispielsweise enthält eine Websitebindung die IP-Adresse (oder nicht angegebene IP-Adressen), die Portnummer und einen optionalen Hostheader, der für die Kommunikation mit der Website verwendet wird. |
protocol |
Erforderliches Zeichenfolgenattribut. Gibt das Protokoll für die Kommunikation mit einer Website an. |
sslFlags |
Optionales Uint-Attribut. Gibt den Typ der Bindung an, die für SSL-Zertifikate (Secure Sockets Layer) verwendet wird.
Bei einem Servernamenindikator (Server Name Indicator, SNI) wird der Hostname als Teil des SSL-Handshakes ausgetauscht. SNI wird im Dialogfeld „Websitebindung hinzufügen“ aktiviert, wenn Sie eine Bindung mit einem HTTPS-Typ hinzufügen. Dies ist besonders nützlich für SSL-Verbindungen, die mehrere Server auf einer einzelnen Netzwerkadresse hosten. Weitere Informationen finden Sie unter IIS 8.0 Servernamensanzeige (SNI): SSL-Skalierbarkeit. Das Attribut sslFlags wird nur festgelegt, wenn das Protokoll httpsist. Der Standardwert ist 0 . |
Untergeordnete Elemente
Keine.
Konfigurationsbeispiel
Im folgenden Beispiel wird eine Website namens Contoso mit zwei Bindungen definiert. Die erste Bindung ist für einen Hostnamen von „www.contoso.com“ auf Port 80 für die IP-Adresse von 192.168.0.1 und die zweite Bindung für eine HTTPS-Bindung für alle IP-Adressen über Port 443.
<site name="Contoso" id="2">
<application path="/" applicationPool="Contoso">
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot" />
</application>
<bindings>
<binding protocol="http" bindingInformation="192.168.0.1:80:www.contoso.com" />
<binding protocol="https" bindingInformation="*:443:" />
</bindings>
</site>
Beispielcode
Die folgenden Beispiele konfigurieren eine Website namens Contoso mit dem Hostnamen „www.contoso.com“ am Port 80 für die IP-Adresse 192.168.0.1 und eine HTTPS-Bindung für alle IP-Adressen über Port 443.
AppCmd.exe
appcmd.exe set site /site.name:Contoso /+bindings.[protocol='http',bindingInformation='192.168.0.1:80:www.contoso.com']
appcmd.exe set site /site.name:Contoso /+bindings.[protocol='https',bindingInformation='*:443:']
Oder Sie können Folgendes verwenden:
appcmd.exe set config -section:system.applicationHost/sites /+"[name='Contoso'].bindings.[protocol='http',bindingInformation='192.168.0.1:80:www.contoso.com']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/sites /+"[name='Contoso'].bindings.[protocol='https',bindingInformation='*:443:']" /commit:apphost
Hinweis
Sie müssen unbedingt den Commitparameter auf apphost
festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.
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 sitesSection = config.GetSection("system.applicationHost/sites");
ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();
ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", @"Contoso");
if (siteElement == null) throw new InvalidOperationException("Element not found!");
ConfigurationElementCollection bindingsCollection = siteElement.GetCollection("bindings");
ConfigurationElement bindingElement = bindingsCollection.CreateElement("binding");
bindingElement["protocol"] = @"http";
bindingElement["bindingInformation"] = @"192.168.0.1:80:www.contoso.com";
bindingsCollection.Add(bindingElement);
ConfigurationElement bindingElement1 = bindingsCollection.CreateElement("binding");
bindingElement1["protocol"] = @"https";
bindingElement1["bindingInformation"] = @"*:443:";
bindingsCollection.Add(bindingElement1);
serverManager.CommitChanges();
}
}
private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
{
foreach (ConfigurationElement element in collection)
{
if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
{
bool matches = true;
for (int i = 0; i < keyValues.Length; i += 2)
{
object o = element.GetAttributeValue(keyValues[i]);
string value = null;
if (o != null)
{
value = o.ToString();
}
if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
{
matches = false;
break;
}
}
if (matches)
{
return element;
}
}
}
return null;
}
}
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 sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
Dim sitesCollection As ConfigurationElementCollection = sitesSection.GetCollection
Dim siteElement As ConfigurationElement = FindElement(sitesCollection, "site", "name", "Contoso")
If (siteElement Is Nothing) Then
Throw New InvalidOperationException("Element not found!")
End If
Dim bindingsCollection As ConfigurationElementCollection = siteElement.GetCollection("bindings")
Dim bindingElement As ConfigurationElement = bindingsCollection.CreateElement("binding")
bindingElement("protocol") = "http"
bindingElement("bindingInformation") = "192.168.0.1:80:www.contoso.com"
bindingsCollection.Add(bindingElement)
Dim bindingElement1 As ConfigurationElement = bindingsCollection.CreateElement("binding")
bindingElement1("protocol") = "https"
bindingElement1("bindingInformation") = "*:443:"
bindingsCollection.Add(bindingElement1)
serverManager.CommitChanges()
End Sub
Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
For Each element As ConfigurationElement In collection
If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
Dim matches As Boolean = True
Dim i As Integer
For i = 0 To keyValues.Length - 1 Step 2
Dim o As Object = element.GetAttributeValue(keyValues(i))
Dim value As String = Nothing
If (Not (o) Is Nothing) Then
value = o.ToString
End If
If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
matches = False
Exit For
End If
Next
If matches Then
Return element
End If
End If
Next
Return Nothing
End Function
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var sitesCollection = sitesSection.Collection;
var siteElementPos = FindElement(sitesCollection, "site", ["name", "Contoso"]);
if (siteElementPos == -1) throw "Element not found!";
var siteElement = sitesCollection.Item(siteElementPos);
var bindingsCollection = siteElement.ChildElements.Item("bindings").Collection;
var bindingElement = bindingsCollection.CreateNewElement("binding");
bindingElement.Properties.Item("protocol").Value = "http";
bindingElement.Properties.Item("bindingInformation").Value = "192.168.0.1:80:www.contoso.com";
bindingsCollection.AddElement(bindingElement);
var bindingElement1 = bindingsCollection.CreateNewElement("binding");
bindingElement1.Properties.Item("protocol").Value = "https";
bindingElement1.Properties.Item("bindingInformation").Value = "*:443:";
bindingsCollection.AddElement(bindingElement1);
adminManager.CommitChanges();
function FindElement(collection, elementTagName, valuesToMatch) {
for (var i = 0; i < collection.Count; i++) {
var element = collection.Item(i);
if (element.Name == elementTagName) {
var matches = true;
for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
var property = element.GetPropertyByName(valuesToMatch[iVal]);
var value = property.Value;
if (value != null) {
value = value.toString();
}
if (value != valuesToMatch[iVal + 1]) {
matches = false;
break;
}
}
if (matches) {
return i;
}
}
}
return -1;
}
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set sitesCollection = sitesSection.Collection
siteElementPos = FindElement(sitesCollection, "site", Array("name", "Contoso"))
If siteElementPos = -1 Then
WScript.Echo "Element not found!"
WScript.Quit
End If
Set siteElement = sitesCollection.Item(siteElementPos)
Set bindingsCollection = siteElement.ChildElements.Item("bindings").Collection
Set bindingElement = bindingsCollection.CreateNewElement("binding")
bindingElement.Properties.Item("protocol").Value = "http"
bindingElement.Properties.Item("bindingInformation").Value = "192.168.0.1:80:www.contoso.com"
bindingsCollection.AddElement(bindingElement)
Set bindingElement1 = bindingsCollection.CreateNewElement("binding")
bindingElement1.Properties.Item("protocol").Value = "https"
bindingElement1.Properties.Item("bindingInformation").Value = "*:443:"
bindingsCollection.AddElement(bindingElement1)
adminManager.CommitChanges()
Function FindElement(collection, elementTagName, valuesToMatch)
For i = 0 To CInt(collection.Count) - 1
Set element = collection.Item(i)
If element.Name = elementTagName Then
matches = True
For iVal = 0 To UBound(valuesToMatch) Step 2
Set property = element.GetPropertyByName(valuesToMatch(iVal))
value = property.Value
If Not IsNull(value) Then
value = CStr(value)
End If
If Not value = CStr(valuesToMatch(iVal + 1)) Then
matches = False
Exit For
End If
Next
If matches Then
Exit For
End If
End If
Next
If matches Then
FindElement = i
Else
FindElement = -1
End If
End Function