Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original
Este tópico ainda não foi avaliado como - Avalie este tópico

SSL Client Authentication

.NET Compact Framework 1.0
Windows Mobile SupportedWindows Embedded CE Supported
9/8/2008

Os certificados de cliente contêm informações que identifica o usuário, bem como informações sobre a organização que emitiu o Certificado. De exemplo, um padrão certificado X.509 at least contém o seguinte:

  • Versão
  • Nº de série
  • Algoritmo de assinatura identificação
  • Nome do emissor
  • Validade período
  • Nome da entidade (usuário)
  • Informações chave pública assunto
  • Assinatura nos campos listados apenas
Note:
Certificados cliente SSL são apenas com suporte no Windows CE .NET 4.1 e posterior.

É possível exigir ou permitir que um cliente para fornecer um Certificado durante as negociações SSL. Se deseja exigir (ou permitir) Certificado um cliente é definido em um por base - virtual - raiz. O servidor da Web será solicitação o cliente da Web para enviar Certificado um cliente, caso ele tenha uma, se um do seguinte sinalizadores definidos como o P parâmetro do raiz virtual solicitada. Para obter mais informações, consulte Configurações do Registro do caminho virtual.

O seguinte mostra como definir os sinalizadores para exigir ou permitir que certificados cliente SSL exemplo de código.

HSE_URL_FLAGS_REQUIRE_CERT (0x00000040) Requires SSL client certificates.
HSE_URL_FLAGS_NEGO_CERT (0x00000020)  Allows SSL client certificates.

Se o cliente não fornece um Certificado no servidor da Web e HSE_URL_FLAGS_REQUIRE_CERT foi definida, a solicitação serão finalizar e um erro serão retornadas ao cliente. Se a pasta HSE_URL_FLAGS_NEGO_CERT mas não o HSE_URL_FLAGS_REQUIRE_CERT Foi definido, em seguida, a solicitação continuará.

Há dois primário maneiras de usar certificados cliente sobre o servidor. Uma é gravar uma extensão ISAPI que usa informações em Certificado de cliente para determinar informações such as que operações de extensão o usuário tem permissão para executar. Neste maiúsculas e minúsculas, a extensão ISAPI mapeia o nome usuário e permissões permitidas para si mesmo. A outra maneira é usar o servidor da Web ao cliente mapa (n.); mapear (v.) certificados antes processamento ainda mais a solicitação.

Se o seguinte sinalizador está definido na P valor da raiz virtual de Web Server tentará coincidir com as informações no Certificado para um nome usuário após o recebimento com êxito o certificado de cliente SSL.

HSE_URL_FLAGS_MAP_CERT   0x00000080  // Map SSL cert to user account

Com IIS, o HSE_URL_FLAGS_MAP_CERT sinalizador será mapa (n.); mapear (v.) o informações do certificado para uma conta usuário NT. Como Windows Embedded CE não possuem contas usuário, este sinalizador será, em vez disso, mapa (n.); mapear (v.) para um pseudo-usuário Web Server. Este usuário, em seguida, é verificado em relação a UserList configuração Registro para o raiz virtual que está sendo acessado, conforme descrito em Direitos de Acesso servidor da Web. Para informações sobre UserList, consulte Configurações do Registro do caminho virtual.

Certificados de cliente são mapeados para os usuários com base na IssuerCN e / ou serial do o Certificado número. Os usuários pseudo Server Web são enumerados no Registro e especificados sob do o site SSL\Users chave. O nome de cada chave Registro na SSL\Users chave especifica nome do usuário a Pseudo. Os valores IssuerCN e Número de série Em cada usuário nome Registro entrada especificar o IssuerCN e Número de série do Certificado que deve ser fornecido na ordem para mapa (n.); mapear (v.) o usuário. IssuerCN é um REG_SZ. Número de série é um binário entrada.

O seguinte exemplo mostra como a instalação um Registro Web Server para exigir certificados cliente SSL para um raiz virtual restrito, criar uma lista de usuários e mapa (n.); mapear (v.) os certificados ao nome do usuário. Neste cenário, desejar para acessar limite para o raiz virtual /Accounts Para os usuários Vera, Ana Maria e Luís.

Primeiro, instalação de Web Server usar SSL. O nome Certificado Certificado CE Server já deve estar instalado no armazenamento de certificados do o Web Server. Este é o servidor Certificado que a Web Server envia em todas as negociações SSL, não para ser confundido com o Certificado cliente. Também presume que o emissor do certificados de cliente será já foram instalação como uma de confiança autoridade na de confiança Windows Embedded CE ou privilégios de segurança armazenar.

[HKEY_LOCAL_MACHINE\HTTPD\SSL]
    "IsEnabled"=dword:1
    "CertificateSubject"= "CE Server Certificate"

Próxima nós instalação o raiz virtual /Accounts. A=1 significa que um usuário deve ser autenticado para obter acesso aos recursos sob este raiz virtual. P = HSE_URL_FLAGS_EXECUTE | HSE_URL_FLAGS_REQUIRE_CERT | HSE_URL_FLAGS_MAP_CERT | HSE_URL_FLAGS_SSL128. Isso permite que os recursos raiz virtual para ser executado — isto é, para executar a extensão ISAPI), requer o cliente para enviar certificados SSL, mapeia o Certificado para uma conta usuário e requer criptografia 128 bit. O UserList Especifica os usuários que terão permissão para acessar essa página.

[HKEY_LOCAL_MACHINE\HTTPD\VROOTS\/Accounting/]
    ; ISAPI extension that we're placing restricitons on.
    @="\windows\accounting.dll" 
    "A"=dword:1
    "P"=dword: 0x000001C4
    "UserList"="alice;bob;carol"

Agora nós lista nossos usuários três e o cliente SSL certificados que serão mapa (n.); mapear (v.)-los. Ana Maria e Luís foram emitidos sua Certificado de CompanyIssuer, que é o servidor de certificados para sua empresa. Como fazemos não desejar permitir acessar para qualquer pessoa que tenha um Certificado emitido a partir CompanyIssuer, nós restringir acessar baseia o serial número do Certificado. Em maiúsculas e minúsculas do Vera, AccountingIssuer é mais restritivo sobre para quais certificados serão emitidos no primeiro local. Assim como não precisará inserir um serial diferente número para cada usuário que tenha um Certificado de AccountingIssuer, nós não incluem o serial número neste maiúsculas e minúsculas.

[HKEY_LOCAL_MACHINE\HTTPD\SSL\USERS\Alice\MAP-1]
    "IssuerCN"="CompanyIssuer"
    "SerialNumber"=hex: 01,02,03,04,00,00,00,00,00,05
[HKEY_LOCAL_MACHINE\HTTPD\SSL\USERS\Bob\MAP-1]
    "IssuerCN"="CompanyIssuer"
    "SerialNumber"=hex: 01,02,03,04,00,00,00,00,00,06
[HKEY_LOCAL_MACHINE\HTTPD\SSL\USERS\Carol\MAP-1]
    "IssuerCN"="AccountingIssuer"

Que é tudo que é necessário para o Registro.

Quando uma solicitação vem em pela SSL para o raiz virtual /Accounting, o servidor da Web será solicitação um cliente Certificado e falha se não for fornecido (devido a HSE_URL_FLAGS_REQUIRE_CERT que está sendo definido.)

Se o Certificado for fornecido, o servidor da Web será executar através de cada um dos usuários e tente para coincidir com o fornecido IssuerCN e Número de série.

Antes de acessar Accounting.dll, o servidor da Web irá verificar se o usuário mapeado pelo certificado de cliente está especificado está presente na UserList. Se isso não for a maiúsculas e minúsculas, o servidor da web retornará um erro, mas não tentará executar autenticação Basic ou Ntlm neste raiz virtual, mesmo se básico e / ou NTLM são com suporte pela Web Server. Se um Certificado cliente é solicitado para uma determinada raiz virtual, nenhuma outra forma de autenticação será com suporte Other Than mapeamento que Certificado cliente ao nome do usuário, conforme descrito acima.

Antes de recuperar as informações de Certificado de cliente, a verificar primeiro será Web Server que o Certificado é válido. Seja válido o Certificado deve ter um válido Data, ser emitido por uma de confiança autoridade, entre outros requisitos. O servidor Web faz um chamar para CertGetCertificateChain Para fazer essa determinação. Se houver erro, CertGetCertificateChain Será especificar um erro da forma CERT_TRUST_xxx (CERT_TRUST Os sinalizadores são definidos no Wincrypt.h). Se o valor especificado é algo diferente CERT_TRUST_NO_ERROR, Por padrão o Web Server irá finalizar a solicitação e retornar um erro para o cliente.

É possível substituir rejeição usar como padrão do servidor da Web de inválido certificados. Para habilitar esse, no chave do Registro SSL de base para o site definido a valor do Registro CertTrustOverride Seja um DWORD do CERT_TRUST_ sinalizadores de erros que você está disposto a ter a ignorar Web Server. O servidor da Web irá ignorar esses (e somente essas) códigos de erro.

PARA instância, para que o site usar como padrão aceitar uma autoridade Certificado que CertGetCertificateChain Exibe erros em, (conjuntoCERT_TRUST_IS_PARTIAL_CHAIN | CERT_TRUST_IS_UNTRUSTED_ROOT) no CertTrustOverride, da seguinte maneira.

[HKEY_LOCAL_MACHINE\COMM\HTTPD\SSL]
    CertTrustOverride=dword: 0x00010020
Security Note:
É altamente recomendável que CertTrustOverride Não ser modificada de valor de usar como padrão, devido a as questões de segurança. Essa funcionalidade é fornecida como um último ditch alternativa para cenários onde certificados apropriados não podem ser emitidos.

Devido à maneira como funciona o protocolo SSL, along with o política de segurança do Web Server, pode haver algumas dificuldades para fazer lançamentos extremamente grandes quantidades de dados no servidor da Web se certificados cliente SSL estiverem sendo usados na mesma solicitação.

A maneira de servidor da Web geralmente alças grandes Post solicitações (mesmo quando fazendo SSL com nenhum cliente certificados) para ler o primeiro PostReadSize tamanho de bytes em uma reserva e parar a leitura. É a responsabilidade de extensão de ISAPI para continuar a receber mais dados neste apontar fazendo chamadas repetidas para ReadClient. O servidor Web faz isso para certificar-se que ele nunca tenta para alocar uma reserva que é muito grande e proteção contra mal-intencionado usuários enviando enormes quantidades de dados para o dispositivo para gastar seus recursos.

Quando uma solicitação para um raiz virtual usando Certificado um cliente, o servidor da Web é sabem que será necessário um certificado de cliente até após o HandShake SSL inicial porque ele não saberá quais raiz virtual está sendo solicitada até após o handshake completo. Quando ele vê-lo precisa de Certificado um cliente, o servidor da Web será solicitação um in the middle of a solicitação. É possível que o cliente da Web enviará seu Certificado cliente depois que ele tem enviado maior PostReadSize quantidade de bytes. Se o servidor Web não tiver recebido o certificado cliente SSL antes de leitura PostReadSize bytes, ela irá finalizar a solicitação.

Para trabalho resolver isso, seja aumentar o tamanho de PostReadSize Ser o tamanho máximo da reserva Você está disposto a aceitar. Como um alternativo, você pode criar uma conexão para o raiz virtual que requer certificados cliente que não não dados POST e que faz um keep-alive. Nesta conexão o Certificado cliente pode ser obtido pelo servidor da Web sem precisar lidar com essa emitir. Sobre o próximo solicitação (como longo como Keep-Alives usados), não deverá haver nenhuma necessidade do cliente reenviar o Certificado e o cenário anterior não será um emitir.

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft. Todos os direitos reservados.