X509Certificate2.MatchesHostname(String, Boolean, Boolean) Método

Definição

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 iPAddress valor 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 dNSName valor 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 dNSName entrada, o segundo carácter deve ser um ponto (.), e a entrada deve ter um comprimento superior a dois.
    O coringa só corresponderá ao hostname valor 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).

Aplica-se a

Ver também