X509Certificate2.MatchesHostname(String, Boolean, Boolean) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überprüft, ob das Zertifikat mit dem angegebenen Hostnamen übereinstimmt.
public bool MatchesHostname (string hostname, bool allowWildcards = true, bool allowCommonName = true);
member this.MatchesHostname : string * bool * bool -> bool
Public Function MatchesHostname (hostname As String, Optional allowWildcards As Boolean = true, Optional allowCommonName As Boolean = true) As Boolean
Parameter
- hostname
- String
Der Hostname, mit dem abgeglichen werden soll.
- allowWildcards
- Boolean
true
, um den Abgleich von Wildcards für dNSName
Werte in der Erweiterung Alternativer Antragstellername zuzulassen, false
andernfalls .
- allowCommonName
- Boolean
true
, um den Abgleich mit dem Wert des Antragstellers Common Name zuzulassen; false
andernfalls .
Gibt zurück
true
, wenn das Zertifikat eine Übereinstimmung mit dem angeforderten Hostnamen ist; Andernfalls false
Ausnahmen
Der hostname
Parameter ist kein gültiger DNS-Hostname oder keine gültige IP-Adresse.
Das Zertifikat enthält mehrere Alternativen Antragstellernamenserweiterungen.
Oder
Die Erweiterung "Alternativer Antragstellername" oder "Antragstellername" konnte nicht decodiert werden.
Hinweise
Diese Methode ist eine plattformneutrale Implementierung der IETF RFC 6125-Hostabgleichslogik. Die SslStream-Klasse verwendet den Hostnamen-Validierungsator des Betriebssystems, was zu anderen Werten dieser Implementierung führen kann.
Der logische Ablauf dieser Methode lautet:
- Wenn der Hostname als IPAddress analysiert wird, wird der IPAddress-Abgleich durchgeführt. Andernfalls wird der DNS-Namensabgleich durchgeführt.
- Für den IPAddress-Abgleich muss der Wert eine genaue Übereinstimmung mit einem
iPAddress
Wert in einem Eintrag der Erweiterung "Alternativer Antragstellername" sein. - Für den DNS-Name-Abgleich muss der Wert eine exakte Übereinstimmung mit einem
dNSName
Wert in einem Eintrag der Erweiterung Alternativer Antragstellername oder eine Wildcard-Übereinstimmung mit demselben sein. - Bei Platzhalterabgleichen muss das Platzhalterzeichen das erste Zeichen im
dNSName
Eintrag sein, das zweite Zeichen muss ein Punkt (.) sein, und der Eintrag muss eine Länge von mehr als zwei aufweisen.
Das Wildcard entspricht nur demhostname
Wert bis zum ersten Punkt (.), die verbleibenden Zeichen müssen eine genaue Übereinstimmung sein. - Wenn keine Erweiterung für den alternativen Antragstellernamen vorhanden ist oder die Erweiterung keine Einträge des entsprechenden Typs enthält, wird der Common Name-Abgleich als Fallback verwendet.
- Wenn der Antragstellername einen einzelnen allgemeinen Namen enthält und dieses Attribut nicht als Teil eines mehrwertigen relativen Distinguished Name definiert ist, wird der Hostname mit dem Wert des Common Name-Attributs abgeglichen.
Beachten Sie, dass beim Abgleich mit allgemeinen Namen keine Wildcards verwendet werden.
Diese Implementierung betrachtet SRV-ID
Werte als URI-ID
außerhalb des Gültigkeitsbereichs und verwendet deren Anwesenheit nicht als Grund, um den Fallback vom Abgleich mit DNS-ID
dem CN-ID
zu beenden.
Diese Methode konvertiert keine Nicht-ASCII-Hostnamen in die IDNA-Darstellung. Für Unicode-Domänen muss der Aufrufer oder einen entsprechenden IDNA-Mapper verwenden IdnMapping .
Die "exakten" Übereinstimmungen, die von dieser Routine ausgeführt werden, sind OrdinalIgnoreCase, da bei Domänennamen keine Groß-/Kleinschreibung beachtet wird.
Diese Methode bestimmt nicht, ob der Hostname von einer vertrauenswürdigen Autorität autorisiert wird. Eine Vertrauensentscheidung kann nicht ohne zusätzliche Überprüfung auf Vertrauensstellung über X509Chaingetroffen werden.
Diese Methode überprüft nicht, ob das Zertifikat über eine id-kp-serverAuth
erweiterte Schlüsselverwendung (1.3.6.1.5.5.7.3.1) verfügt.