O stunnel não funciona com SSLv3 de alguns hosts

9

AVISO: o SSLv3 está obsoleto . Considere desativá-lo completamente .

Estou tentando configurar o Stunnel para o servidor como cache SSL. Tudo foi tranquilo e, principalmente, funciona como projetado.

Então encontrei erros nos arquivos de log:

 SSL_accept: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

Nem todos os clientes acionam isso, por algum motivo estranho. Conectando a partir do CentOS usando links - erro aparece (tentei várias máquinas). Conectando-se a partir do Ubuntu usando links - sem erros.

Tentei usar o wget e tudo é tranquilo com o TLSv1, mas o erro aparece com o SSLv3. Ao mesmo tempo, o wget reporta:

OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure

Não foi possível estabelecer a conexão SSL.

Aqui está a minha configuração:

pid = /etc/stunnel/stunnel.pid
debug = 3
output = /etc/stunnel/stunnel.log

socket=l:TCP_NODELAY=1
socket=r:TCP_NODELAY=1

verify=3    

; fixing "fingerprint does not match" error
fips=no

[https]
accept=12.34.56.78:443
connect=127.0.0.1:80
TIMEOUTclose=0
xforwardedfor=yes
CAfile = /path/to/ssl/example.com.cabundle
cert=/path/to/ssl/example.com.crt
key=/path/to/ssl/example.com.key

Alguém tem alguma idéia do que está acontecendo aqui? Pesquisado no Google por várias horas agora, não consigo descobrir.

Versão do OpenSSL: OpenSSL 0.9.8e-fips-rhel5 01 de julho de 2008.

Versão Stunnel: 4.32

EDITAR:

Aqui está uma saída de openssl s_client -connect example.com:443 -ssl3

CONNECTED(00000004)
3897:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1086:SSL alert number 40
3897:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:530:

Mesmo com -tls1obras OK, sem erros.

Sergey
fonte

Respostas:

10

Ok, problema foi resolvido ... eu adicionei isso à configuração:

sslVersion = all
options = NO_SSLv2

Pelo que entendi, o erro estava relacionado ao SSLv23. Agora tudo funciona como esperado.

Sergey
fonte
Eu também precisava adicionar #fips = no
Steve Tauber
Você também pode adicionar option = NO_SSLv3para forçar uma das variantes do TLS a ser selecionada.
Tedford
6

SSL3_GET_RECORD:wrong version numberÉ a chave. Parece que o lince nos seus sistemas CentOS não está usando SSLv3.

Será mais fácil verificar o comportamento exato com openssl s_client:

Verifique o que acontece apenas com SSLv3:

openssl s_client -connect server:443 -ssl3

E com apenas TLS:

openssl s_client -connect server:443 -tls1
Shane Madden
fonte
Editou a publicação para fornecer mais detalhes
Sergey
Tente adicionar -no_ticketà tentativa SSLv3. Parece com esse bug do OpenSSL .
Shane Madden
Hmm, mostra opção desconhecida
Sergey
@ Emerge Isso é estranho. Do que você ganha openssl version?
Shane Madden
0

Eu tive que definir

options = -NO_SSLv3

para desativar a opção agora padrão de NO_SSLv3. (O servidor que está se conectando não faz TLS)

Jonathan Nicol
fonte