Поделиться через


X509Certificate2.MatchesHostname(String, Boolean, Boolean) Метод

Определение

Проверяет, соответствует ли сертификат указанному имени узла.

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

Параметры

hostname
String

Имя узла для сопоставления.

allowWildcards
Boolean

true Значение , чтобы разрешить сопоставление подстановочных знаков для dNSName значений в расширении альтернативного имени субъекта; в противном случае — значение false.

allowCommonName
Boolean

true , чтобы разрешить сопоставление со значением общего имени субъекта; в противном случае — false.

Возвращаемое значение

true Значение , если сертификат совпадает с запрошенным именем узла; Иначе false

Исключения

Параметр hostname не является допустимым именем узла DNS или IP-адресом.

Сертификат содержит несколько расширений альтернативного имени субъекта.

-или-

Не удалось декодировать расширение альтернативного имени субъекта или имя субъекта.

Комментарии

Этот метод является платформо-нейтральной реализацией логики сопоставления узлов IETF RFC 6125. Класс SslStream использует проверяющий элемент управления имени узла из операционной системы, что может привести к различным значениям из этой реализации.

Логический поток этого метода:

  • Если имя узла анализируется как , IPAddress то выполняется сопоставление IPAddress; в противном случае выполняется сопоставление DNS-имени.
  • Для сопоставления IPAddress значение должно точно совпадать со значением iPAddress в записи расширения "Альтернативное имя субъекта".
  • Для сопоставления DNS-имени значение должно быть точным совпадением со значением dNSName в записи расширения "Альтернативное имя субъекта" или подстановочными знаками.
  • Для сопоставления с подстановочными знаками подстановочный знак должен быть первым символом в dNSName записи, второй символ должен быть точкой (.), а длина записи должна превышать два.
    Подстановочный знак будет соответствовать только значению hostname до первой точки (.), остальные символы должны быть точными.
  • Если расширение альтернативного имени субъекта отсутствует или у него нет записей соответствующего типа, то в качестве резервного варианта используется сопоставление общих имен.
  • Для сопоставления общих имен, если имя субъекта содержит одно общее имя и этот атрибут не определен как часть многозначного относительного различающегося имени, имя узла сопоставляется со значением атрибута Common Name.
    Обратите внимание, что подстановочные знаки не используются в сопоставлении общих имен.

Эта реализация рассматривает SRV-ID значения или URI-ID значения как не область и не будет использовать их присутствие в качестве причины, чтобы остановить откат от сопоставления с DNS-IDCN-ID.

Этот метод не преобразует имена узлов, отличные от ASCII, в представление IDNA. Для доменов Юникода вызывающий объект должен использовать IdnMapping или эквивалентный сопоставитель IDNA.

"Точные" совпадения, выполняемые этой подпрограммой, являются OrdinalIgnoreCase, так как доменные имена не чувствительны к регистру.

Этот метод не определяет, авторизовано ли имя узла доверенным центром сертификации. Решение о доверии не может быть принято без дополнительной проверки доверия через X509Chain.

Этот метод не проверка, что сертификат имеет расширенное id-kp-serverAuth использование ключа (1.3.6.1.5.5.7.3.1).

Применяется к