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-ID
CN-ID
.
Этот метод не преобразует имена узлов, отличные от ASCII, в представление IDNA. Для доменов Юникода вызывающий объект должен использовать IdnMapping или эквивалентный сопоставитель IDNA.
"Точные" совпадения, выполняемые этой подпрограммой, являются OrdinalIgnoreCase, так как доменные имена не чувствительны к регистру.
Этот метод не определяет, авторизовано ли имя узла доверенным центром сертификации. Решение о доверии не может быть принято без дополнительной проверки доверия через X509Chain.
Этот метод не проверка, что сертификат имеет расширенное id-kp-serverAuth
использование ключа (1.3.6.1.5.5.7.3.1).