Openssl no modo de cliente: verificar autenticação

0

Eu quero testar minha implementação de servidor seguro com o openssl (v. 1.0.1e). Eu uso o openssl no modo cliente para conectar ao servidor:

openssl s_client -cert client.pem -connect localhost:8888 -debug

Isso é bem-sucedido e vejo que um handshake de SSL ocorreu.

O servidor está configurado para rejeitar qualquer cliente que não apresente um certificado. Eu uso o comando acima sem a opção -cert , mas a conexão com o servidor é estabelecida com sucesso.

A documentação especifica:

-cert certname
The certificate to use, if one is requested by the server. The default is not to use a certificate.

No traço wireshark (v. 1.8.10), vejo que ambos os cenários (isto é, com e sem a opção -cert ) contêm as mesmas etapas. O protocolo é TLSv1:

  1. Cliente Hello
  2. Servidor Olá, Certificado, Exchange Server Key, Servidor Olá, Concluído
  3. Troca de chaves do cliente
  4. Alterar especificação de criptografia
  5. Mensagem de handshake criptografada
  6. Alterar especificação de criptografia
  7. Mensagem de handshake criptografada

Por que a conexão é bem-sucedida em ambos os cenários, embora o servidor deva rejeitar clientes sem certificados? A etapa 3 indica que o certificado do cliente é apresentado ao servidor? Como obtenho o openssl para não enviar um certificado?

    
por Markus L 05.07.2016 / 11:00

1 resposta

0

Houve uma configuração incorreta com o servidor, portanto, a solicitação de certificado nunca foi enviada.

Se tudo estiver correto, deve haver um CertificateRequest durante o ServerHello . O passo 2 será semelhante a:

  1. Servidor Olá, Certificado, Troca de chave do servidor, Solicitação de certificado, Servidor Olá, Feito
por 18.07.2016 / 14:41