Pergunta

Estou usando um aplicativo que usa o OpenSSL para o lado do cliente TLS. Atualizamos a versão OpenSSL de 0.9.8e para 0.9.8k. E então o TLS não funciona ...

O Wireshark mostra que a nova versão (com o OpenSSL 0.9.8K) envia o pacote Hello Client Hello com uma extensão da sessão - e o lado do servidor responde com um erro interno fatal.

A versão anterior envia um pacote de hello quase idêntico, mas sem o sessionTicket Ext.

Quando substituí o TLSV1_CLIENT_METHOD por SSLV23_CLIENT_METHOD, tudo funcionou bem - o cliente enviado Hello Packet era um SSLV2 (no sniffer) sem qualquer extensão (como não era TLS, mas SSL?)

Existe uma maneira melhor de desativar essa extensão ou resolver o problema de outra maneira?

Obrigado antecipadamente, rursw1

Foi útil?

Solução

Citação da RFC 5077: “Observe que a codificação de uma extensão de sessão vazia foi ambígua na RFC 4507. Uma implementação RFC 4507 pode ter codificado como:

    00 23      Extension type 35
    00 02      Length of extension contents
    00 00      Length of ticket

Ou pode ter codificado da mesma maneira que esta atualização:

    00 23      Extension type 35
    00 00      Length of extension contents

Um servidor que deseja oferecer suporte aos clientes da RFC 4507 deve responder a uma extensão de sessão vazia codificada da mesma maneira que a recebeu. “Portanto, o servidor com quem trabalhei suporta RFC 4507 e não o 5077 mais recente.

Removendo -o 'normalmente' usando SSL_CTX_SET_Options com SSL_OP_NO_TICKET resolveu o problema.

Espero que isso ajude alguém ...

EDIT: Bem, isso também pode ser feito com o sinalizador de configuração -no -tlsext. (Ao executar o script de configuração PERL). Porém, preste atenção que no OpenSSL 0.9.8N e OpenSSL 1.0.0, você precisará comentar algumas partes do código -fonte ou não será compilado - como a renegociação segura (que é considerada insegura por si só) requer isto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top