Eu realmente preciso de certificados de cliente para serem assinados por uma CA confiável?

2

Suponha que eu tenha um site que eu quero que os usuários possam fazer login com certificados de cliente. Pelo que entendi, o cliente está apresentando o site com a metade pública de um par de chaves e provando que eles têm a metade privada correspondente. Isso está correto? Em caso afirmativo, não está verificando se um cliente está apresentando uma chave pública conhecida (previamente autorizada) suficiente para saber se é um usuário conhecido, sem que o certificado tenha sido assinado por uma autoridade de certificação confiável?

    
por Isaac 21.04.2012 / 21:59

4 respostas

2

Quando você usa a autenticação de certificado de cliente, no final do handshake, o cliente envia um % co_de Mensagem% TLS onde assina com sua chave privada a concatenação de todas as mensagens TLS que foram trocadas entre o cliente e o servidor: algo comumente conhecido por ambos.

Isso independe do fato de o certificado do cliente ser confiável ou não. O servidor ainda verifica a assinatura em relação à chave pública apresentada no certificado do cliente. Se falhou, o handshake falharia.

No final do handshake, se o servidor confia ou não no que o certificado afirma, ou seja, na ligação entre a chave pública, o identificador e vários outros atributos, saberá pelo menos que o cliente tem a chave privada. para a chave pública neste certificado (o resto pode ou não ser verdade).

Se você tiver uma lista predefinida de chaves públicas conhecidas (como chaves públicas configuradas para uma conexão SSH, por exemplo), poderá executar a autenticação dessa maneira. O que você sente falta é a PKI: toda a infraestrutura para ajudá-lo a gerenciar as chaves e a quem elas pertencem. Como a maioria das definições de configuração é destinada para uso em uma PKI, isso também pode exigir mais trabalho (incluindo programação adicional).

Todas as outras propriedades da conexão TLS estão intactas: a criptografia ainda é garantida da mesma forma que no contexto de uma PKI. Não tenho certeza do que o @WesleyDavid está falando em sua resposta sobre este assunto. De qualquer forma, trata-se de certificados de clientes, para que a criptografia entre o cliente e o servidor ocorra de qualquer forma, seja ou não apresentado um certificado de cliente (desde que seja usado um conjunto de criptografia com criptografia não nula, é claro).

    
por 25.04.2012 / 01:02
2

Claro, e você pode fazer isso, fazendo com que os clientes assinem automaticamente cada certificado e confiem manualmente em cada um deles como sua própria CA raiz, em vez de tê-los assinado por uma CA confiável.

Mas realmente não faz muito sentido fazer isso - parece que você tem clientes que possuem certificados assinados por uma CA confiável. Você está apenas tentando evitar a etapa de validação do relacionamento de confiança?

Você pode esclarecer o que você está tentando alcançar?

    
por 21.04.2012 / 22:05
2

Suppose I have a site that I want users to be able to log into with client certificates.

Para ser claro, estamos falando de fazer login com certificados e não falar em nenhum tópico de criptografia.

As I understand it, the client is presenting the site with the public half of a keypair and proving that they have the corresponding private half. Is that correct?

Isso está correto para autenticação de par de chaves.

If so, then isn't checking that a client is presenting a known (previously-authorized) public key sufficient to know that it's a known user, without the certificate having been signed by a trusted CA?

É suficiente saber que o cliente que está tentando autenticar tem a chave privada (e talvez a senha da chave privada, se estiver protegida dessa maneira). Desde que isso seja apenas para autenticação e não criptografia, você não precisa se preocupar com as autoridades de certificação. Você só precisa coletar chaves públicas e delegar autoridade com base nessas chaves adequadamente.

    
por 21.04.2012 / 22:09
2

Claro, você pode fazer isso, mas perde os benefícios de uma CA. O benefício de uma CA é que você só precisa conhecer a CA, você não precisa conhecer cada cliente individualmente de antemão. Se você usar um esquema no qual reconheça apenas a chave, precisará configurar individualmente cada chave no servidor. Se você quer apenas saber que é o mesmo usuário, basta confirmar que é a mesma chave pública.

    
por 21.04.2012 / 23:06