X509Certificate2.MatchesHostname(String, Boolean, Boolean) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 em 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 aohostname
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 se 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 estiver 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 caracteres curinga 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 é 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 marcar que o certificado tenha um id-kp-serverAuth
uso estendido de chave (1.3.6.1.5.5.7.3.1).