Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As System.Net classes dão suporte a várias maneiras de selecionar e validar System.Security.Cryptography.X509Certificates conexões SSL (Secure Socket Layer). Um cliente pode selecionar um ou mais certificados para se autenticar em um servidor. Um servidor pode exigir que um certificado do cliente tenha um ou mais atributos específicos para autenticação.
Definição
Um certificado é um fluxo de bytes ASCII que contém uma chave pública, atributos (como número de versão, número de série e data de validade) e uma assinatura digital de uma Autoridade de Certificação. Os certificados são usados para estabelecer uma conexão criptografada ou autenticar um cliente em um servidor.
Seleção e validação de certificado do cliente
Um cliente pode selecionar um ou mais certificados para uma conexão SSL específica. Os certificados do cliente podem ser associados à conexão SSL a um servidor Web ou a um servidor de email SMTP. Um cliente adiciona certificados a uma coleção de objetos de classe X509Certificate ou X509Certificate2. Usando o email como exemplo, a coleção de certificados é uma instância de X509CertificateCollection associada à propriedade ClientCertificates da classe SmtpClient. A HttpWebRequest classe tem uma propriedade semelhante ClientCertificates .
A principal diferença entre a X509Certificate classe e a X509Certificate2 classe é que a chave privada deve residir no repositório de certificados da X509Certificate classe.
Mesmo que os certificados sejam adicionados a uma coleção e associados a uma conexão SSL específica, nenhum certificado será enviado ao servidor, a menos que o servidor os solicite. Se vários certificados de cliente forem definidos em uma conexão, o melhor será usado com base em um algoritmo que considera a correspondência entre a lista de emissores de certificado fornecida pelo servidor e o nome do emissor do certificado do cliente.
A SslStream classe fornece ainda mais controle sobre o handshake SSL. Um cliente pode especificar um delegado para escolher qual certificado de cliente usar.
Um servidor remoto pode verificar se um certificado do cliente é válido, atual e assinado pela Autoridade de Certificação apropriada. Um delegado pode ser adicionado ao ServerCertificateValidationCallback para impor a validação de certificado.
Seleção de certificado do cliente
O .NET Framework seleciona o certificado do cliente a ser apresentado ao servidor da seguinte maneira:
Se um certificado do cliente tiver sido apresentado anteriormente ao servidor, o certificado será armazenado em cache quando apresentado pela primeira vez e será reutilizado para solicitações de certificado do cliente subsequentes.
Se houver um representante, sempre use o resultado do representante como o certificado do cliente a ser selecionado. Tente usar um certificado armazenado em cache quando possível, mas não use credenciais anônimas armazenadas em cache se o delegado tiver retornado nulo e a coleção de certificados não estiver vazia.
Se este for o primeiro desafio de um certificado de cliente, o Framework enumera os certificados nos objetos de classe X509Certificate ou X509Certificate2 associados à conexão, procurando correspondência entre a lista de emissores de certificado fornecida pelo servidor e o nome do emissor do certificado do cliente. O primeiro certificado que corresponde é enviado para o servidor. Se nenhum certificado corresponder ou a coleção de certificados estiver vazia, uma credencial anônima será enviada ao servidor.
Ferramentas para configuração de certificado
Várias ferramentas estão disponíveis para configuração de certificado de cliente e servidor.
A ferramenta Winhttpcertcfg.exe pode ser usada para configurar certificados de cliente. A ferramenta Winhttpcertcfg.exe é fornecida como uma das ferramentas com o Kit de Recursos do Windows Server 2003. Essa ferramenta também está disponível como download como parte das Ferramentas do Kit de Recursos do Windows Server 2003 no www.microsoft.com.
A ferramenta HttpCfg.exe pode ser usada para configurar certificados de servidor para a HttpListener classe. A ferramenta HttpCfg.exe é fornecida como uma das ferramentas de suporte para o Windows Server 2003 e o Windows XP Service Pack 2. HttpCfg.exe e outras ferramentas de suporte não são instaladas por padrão no Windows Server 2003 ou no Windows XP. No Windows Server 2003. as ferramentas de suporte são instaladas separadamente da seguinte pasta e arquivo no CD-ROM do Windows Server 2003:
\Support\Tools\Suptools.msi
Para uso com o Windows XP Service Pack 2, as Ferramentas de Suporte do Windows XP estão disponíveis como download do www.microsoft.com.
O código-fonte para uma versão da ferramenta HttpCfg.exe também é fornecido como um exemplo com o SDK do Windows Server. O código-fonte do exemploHttpCfg.exe é instalado por padrão com os exemplos de rede como parte do SDK do Windows na seguinte pasta:
C:\Arquivos de Programas\Microsoft SDKs\Windows\v1.0\Samples\NetDS\http\serviceconfig
Além dessas ferramentas, as classes X509Certificate e X509Certificate2 fornecem métodos para carregar um certificado do sistema de arquivos.