Share via


X509Certificate2.MatchesHostname(String, Boolean, Boolean) Methode

Definition

Ü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, falseandernfalls .

allowCommonName
Boolean

true , um den Abgleich mit dem Wert des Antragstellers Common Name zuzulassen; falseandernfalls .

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 dem hostname 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-IDzu 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.

Gilt für: