Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As System.Net classes suportam 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 autenticar-se em um servidor. Um servidor pode exigir que um certificado de 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 para autenticar um cliente em um servidor.
Seleção e Validação de Certificados de Cliente
Um cliente pode selecionar um ou mais certificados para uma conexão SSL específica. Os certificados de 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 email como exemplo, a coleção de certificados é uma instância de um X509CertificateCollection associada à propriedade ClientCertificates da classe SmtpClient. A HttpWebRequest classe tem uma propriedade semelhante ClientCertificates .
A principal diferença entre a X509Certificate e a classe X509Certificate2 é que a chave privada deve residir no armazenamento de certificados da classe X509Certificate.
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 certificados 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 de cliente é válido, atual e assinado pela Autoridade de Certificação apropriada. Um delegado pode ser adicionado ao ServerCertificateValidationCallback para efetuar a validação do certificado.
Seleção de Certificado de Cliente
O .NET Framework seleciona o certificado de cliente a ser apresentado ao servidor da seguinte maneira:
Se um certificado de cliente foi apresentado anteriormente ao servidor, o certificado é armazenado em cache quando apresentado pela primeira vez e é reutilizado para solicitações de certificado de cliente subsequentes.
Se um delegado estiver presente, utilize sempre o resultado obtido pelo delegado como o certificado do cliente a selecionar. 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 para um certificado de cliente, o Framework enumerará os certificados em X509Certificate ou os X509Certificate2 objetos de classe associados à conexão, procurando uma correspondência entre a lista de emissores de certificados fornecida pelo servidor e o nome do emissor do certificado do cliente. O primeiro certificado correspondente é 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 certificados
Várias ferramentas estão disponíveis para a configuração de certificados 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 do Windows Server 2003 Resource Kit. Essa ferramenta também está disponível como download como parte das Ferramentas do Windows Server 2003 Resource Kit em 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 Windows Server 2003 e Windows XP Service Pack 2. HttpCfg.exe e as 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 utilização com o Windows XP Service Pack 2, as Ferramentas de Suporte do Windows XP estão disponíveis para transferência a partir 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 para o exemplo deHttpCfg.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 X509Certificate classes e X509Certificate2 fornecem métodos para carregar um certificado do sistema de arquivos.