Falha de autenticação do certificado do lado do cliente

3

Estou tentando colocar os bits e peças finais em um aplicativo cliente / servidor que estou escrevendo, mas algo parece atrapalhar a última etapa do handshake SSL.

O lado do cliente do programa conecta e estabelece uma conexão segura com um servidor sem problemas, mas se eu quiser executar operações do lado do servidor do programa, ele não fará nenhuma conexão.

Quando tento conectar-me ao meu servidor pelo Firefox (como cliente), o navegador alerta para mim que o certificado não é adequado para a conexão.

No lado do servidor, meus logs refletem que há um unknown ca ou certificate unkown sempre que eu tento aceitar bytes do meu cliente.

Acho que minha pergunta se resume a este ponto:

Você tem que fazer certificados diferentes para um aplicativo do lado do cliente versus um aplicativo do lado do servidor? Qual a diferença entre estes?

    
por kelly.dunn 13.09.2010 / 01:06

3 respostas

5

Da mesma forma que os certificados de servidor identificam exclusivamente um servidor (ou domínio), os certificados de cliente identificam exclusivamente um cliente. E assim como os certificados do servidor devem ser assinados por alguém em quem o cliente confia, os certificados do cliente devem ser assinados por alguém em quem o servidor confia.

Normalmente, quando você configura um servidor para aceitar certificados de cliente, você especifica um certificado de assinatura que deve ser usado para assinar o certificado do cliente. Isso permite que o servidor saiba que o cliente está "autorizado", seja lá o que isso possa significar em seu contexto, já que presumivelmente você só assinará certificados para usuários "autorizados".

A permissão de certificados de cliente sem qualquer tipo de verificação é geralmente possível com a maioria dos servidores, mas acaba com o objetivo.

    
por 13.09.2010 / 02:33
3

Depende do tipo de certificado do servidor. Às vezes, os certificados auto-assinados podem ser problemáticos. Se for assinado por uma autoridade de certificação, geralmente o certificado do cliente também deverá ser assinado pela mesma autoridade de certificação e poderá precisar de toda a cadeia de certificados também.

Você pode usar o openssl para reunir algumas informações sobre CAs aceitáveis para certificados de clientes com a linha de comando:

openssl s_client -connect host.domain.tld:443 

ou qualquer porta na qual o SSL esteja escutando. Isso deve fornecer informações sobre a cadeia de certificados até a CA raiz e também fornecer CAs aceitáveis para certificados de clientes.

    
por 13.09.2010 / 01:23
0

jtpresta em um de seus comentários faz indiretamente um ponto interessante, mas muito verdadeiro: a autenticação do cliente SSL é uma bagunça. É bom porque é absolutamente seguro, mas é uma droga porque é difícil configurar e manter.

A menos que você tenha um bom motivo, use a autenticação de chave compartilhada (ou seja, "senha"). Você economizará tempo e dinheiro. A autenticação SSL é boa quando a segurança supera os custos por uma margem bastante ampla.

    
por 16.09.2010 / 21:30