Ok, o problema foi resolvido ... Adicionei isso à configuração:
sslVersion = all
options = NO_SSLv2
Até onde eu sei, o erro estava relacionado ao SSLv23. Agora tudo funciona como esperado.
AVISO: O SSLv3 está obsoleto . Considere o desabilitando-o completamente .
Estou tentando configurar o Stunnel como servidor como cache SSL. Tudo foi bom, e principalmente funciona como projetado.
Depois, encontrei erros nos arquivos de log:
SSL_accept: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Nem todos os clientes ativam isso, por algum motivo estranho. Conectando a partir do CentOS usando links - o erro aparece (tentou várias máquinas). Conectando a partir do Ubuntu usando links - sem erros.
Tentei usar wget, e tudo é bom com TLSv1, mas o erro aparece com SSLv3. Ao mesmo tempo, wget reports:
OpenSSL: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Não é possível estabelecer conexão SSL.
Aqui está 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 ideia do que está acontecendo aqui? Pesquisei 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:
O mesmo com -tls1
funciona bem, sem erros.
SSL3_GET_RECORD:wrong version number
é a chave. Parece que o lynx em seus sistemas CentOS não está usando SSLv3.
Será mais fácil verificar o comportamento exato com openssl s_client
:
Verifique o que acontece com apenas SSLv3:
openssl s_client -connect server:443 -ssl3
E com apenas TLS:
openssl s_client -connect server:443 -tls1
Eu tive que definir
options = -NO_SSLv3
para desativar a opção agora padrão de NO_SSLv3. (O servidor que se conecta não faz TLS)
Tags ssl openssl ssl-certificate stunnel