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 host com o qual corresponder.

allowWildcards
Boolean

true para permitir a correspondência de caracteres curinga para dNSName valores na extensão Nome Alternativo da Entidade; caso contrário, false.

allowCommonName
Boolean

true para permitir a correspondência com o valor de Nome Comum da entidade; caso contrário, false.

Retornos

true se o certificado for uma correspondência para o nome do host solicitado; Caso contrário false

Exceções

O hostname parâmetro não é um nome de host DNS válido ou endereço IP.

O certificado contém várias extensões de Nome Alternativo da Entidade.

-ou-

Não foi possível decodificar a extensão Nome Alternativo da Entidade ou o Nome da Entidade.

Comentários

Esse método é uma implementação neutra de plataforma da lógica de correspondência de host RFC 6125 do IETF. A classe SslStream usa o validador de nome de host do sistema operacional, o que pode resultar em valores diferentes dessa implementação.

O fluxo lógico desse método é:

  • Se o nome do host for analisado como um IPAddress , a correspondência de IPAddress será feita; caso contrário, a correspondência de nome DNS será feita.
  • Para correspondência de IPAddress, o valor deve ser uma correspondência exata em relação a um iPAddress valor em uma entrada da extensão Nome Alternativo da Entidade.
  • Para correspondência de nome DNS, o valor deve ser uma correspondência exata em relação a um dNSName valor em uma entrada da extensão Nome Alternativo da Entidade ou uma correspondência curinga com relação ao mesmo.
  • Para correspondência de curinga, o curinga deve ser o primeiro caractere na dNSName entrada, o segundo caractere deve ser um ponto (.) e a entrada deve ter um comprimento maior que dois.
    O curinga corresponderá apenas ao hostname valor até o primeiro período (.), os caracteres restantes devem ser uma correspondência exata.
  • Se não houver nenhuma extensão nome alternativo da entidade ou a extensão não tiver nenhuma entrada do tipo apropriado, a correspondência de Nome Comum será usada como um fallback.
  • Para correspondência de Nome Comum, se o Nome da Entidade contiver um único Nome Comum e esse atributo não for definido como parte de um Nome Distinto Relativo de vários valores, o nome do host será correspondido com o valor do atributo Common Name.
    Observe que curingas não são usados na correspondência de Nome Comum.

Essa implementação considera SRV-ID valores ou URI-ID valores fora do escopo e não usará sua presença como um motivo para impedir que o fallback DNS-ID corresponda ao CN-ID.

Esse método não converte nomes de host não ASCII para a representação IDNA. Para domínios Unicode, o chamador deve usar IdnMapping ou um mapeador IDNA equivalente.

As correspondências "exatas" executadas por essa rotina são OrdinalIgnoreCase, pois os nomes de domínio não diferenciam maiúsculas de minúsculas.

Esse método não determina se o nome do host está autorizado por uma autoridade confiável. Uma decisão de confiança não pode ser tomada sem verificar adicionalmente a relação de confiança por meio de X509Chain.

Esse método não verifica se o certificado tem um id-kp-serverAuth uso estendido de chave (1.3.6.1.5.5.7.3.1).

Aplica-se a