X509Certificate2.MatchesHostname(String, Boolean, Boolean) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Verifica se o certificado corresponde ao nome do host fornecido.
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
Parâmetros
- hostname
- String
O nome do anfitrião para corresponder.
- allowWildcards
- Boolean
true para permitir a correspondência de coringa para dNSName valores na extensão Subject Alternative Name; caso contrário, false.
- allowCommonName
- Boolean
true para permitir a correspondência com o valor do Nome Comum do assunto; caso contrário, false.
Devoluções
true se o certificado corresponder ao nome de host solicitado; caso contrário, false
Exceções
O hostname parâmetro não é um nome de host DNS ou endereço IP válido.
O certificado contém múltiplas extensões de Nome Alternativo de Sujeito.
-ou-
A extensão Nome Alternativo de Sujeito ou Nome Sujeito não podiam ser decodificados.
Observações
Este método é uma implementação neutra da plataforma da lógica de correspondência de host IETF RFC 6125. A classe SslStream utiliza o validador de nomes de host do sistema operativo, o que pode resultar em valores diferentes desta implementação.
O fluxo lógico deste método é:
- Se o nome do host analisar como um IPAddress IPAddress então é feito; caso contrário, a correspondência do nome DNS é feita.
- Para a correspondência IPAddress, o valor deve ser uma correspondência exata com um
iPAddressvalor numa entrada da extensão Subject Alternative Name. - Para a correspondência de Nomes DNS, o valor deve ser uma correspondência exata com um
dNSNamevalor numa entrada da extensão Subject Alternative Name, ou uma correspondência coringa com a mesma. - Para a correspondência de coringas, o coringa deve ser o primeiro carácter da
dNSNameentrada, o segundo carácter deve ser um ponto (.), e a entrada deve ter um comprimento superior a dois.
O coringa só corresponderá aohostnamevalor até ao primeiro período (.), as personagens restantes devem ser uma correspondência exata. - Se não existir uma extensão de Nome Alternativo de Sujeito, ou se a extensão não tiver entradas do tipo apropriado, então a correspondência de Nomes Comuns é usada como plano B.
- Para a correspondência de Nome Comum, se o Nome do Sujeito contiver um único Nome Comum, e esse atributo não estiver definido como parte de um Nome Distinto Relativo multivalorado, então o nome anfitrião é comparado com o valor do atributo Nome Comum.
Note que os coringas não são usados na correspondência de nomes comuns.
Esta implementação considera SRV-ID valores ou URI-ID valores como fora do âmbito e não usará a sua presença como razão para impedir DNS-ID que o recuo coincida com o CN-ID.
Este método não converte nomes de host não ASCII para a representação IDNA. Para domínios Unicode, o chamador deve utilizar IdnMapping ou um mapeador IDNA equivalente.
As correspondências "exatas" realizadas por esta rotina são OrdinalIgnoreCase, pois os nomes de domínio não distinguem maiúsculas e minúsculas.
Este método não determina se o nome de anfitrião é autorizado por uma autoridade de confiança. Uma decisão de trust não pode ser tomada sem verificar adicionalmente a confiança através X509Chainde .
Este método não verifica se o certificado tem uma id-kp-serverAuth utilização estendida da chave (1.3.6.1.5.5.7.3.1).