Proxy SSL com stunnel

3

Estou tentando definir uma conexão SSL com o stunnel . Algum tipo de proxy SSL.

Final aim
Conecte http somente CLIENTE somente para https SERVER .

Meu plano é

  1. CLIENTE: altera o ponto final para PROXY
  2. PROXY: use o stunnel para receber solicitações do CLIENT e encaminhá-las para o SERVER

stunnel.conf

cert = /etc/stunnel/stunnel.pem
foreground = yes
chroot = /var/run/stunnel
setuid = stunnel
setgid = stunnel
pid = /stunnel.pid
debug = 7
[my_route]
accept = 7121
connect = SERVER:443
;connect = SERVER:443/somedata

Teste 1

$openssl s_client -connect SERVER:443
New, TLSv1/SSLv3, Server public key is 2048 bit

Teste 2

openssl s_client -connect PROXY:7121
New, TLSv1/SSLv3, Server public key is 2048 bit

Result (conectando de CLIENT para SERVER por PROXY).

Service [my_route] accepted (FD=3) from 10.0.2.2:12345
Service [my_route] started
Service [my_route] accepted connection from 10.0.2.2:12345
SSL state (accept): before/accept initialization
SSL_accept: 1408F10B: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Connection reset: 0 byte(s) sent to SSL, 0 byte(s) sent to socket
Local socket (FD=3) closed
Service [my_route] finished (0 left)

Perguntas

  1. Por que o IP não corresponde ao SERVIDOR? Por que é conectado a 10.0.2.2?
    Isso significa que estou me conectando a um servidor errado? Como isso pode acontecer?

  2. O que esse erro diz? Esse servidor remoto usa outra versão do SSL, não é?

por Ilya 29.12.2012 / 13:40

3 respostas

0

  1. Why doesn't the IP match to SERVER? Why is it connectiong to 10.0.2.2?

Porque esse endereço IP não é o endereço do servidor ao qual está se conectando, mas o endereço da máquina cliente da qual está recebendo (executando o openssl s_client).

Does it mean that I'm connecting to a wrong server? How can that happen?

Não, não tem nada a ver com o servidor.

  1. What does this error say? That remote server uses another version of SSL, doesn't it?

Isso significa que seu stunnel tenta falar SSL com o cliente (openssl s_client) se conectando. Eles não parecem concordar com a versão do protocolo SSL para usar.

No entanto, isso está totalmente errado. Na configuração que você deseja configurar, stunnel deve aguardar por conexões HTTP e encapsular essas conexões com HTTPS para SERVER. Portanto, você não pode usar o openssl s_client para conectar-se ao seu stunnel, pois o openssl s_client usaria SSL e o stunnel estaria esperando por conexões não-SSL.

Para resolver isso, você precisará de uma linha extra client = yes em sua configuração. Então, em vez de usar o openssl s_client como o cliente para o seu stunnel, você deve usar o telnet ( telnet server2 7121 ) ou um programa capaz de falar HTTP ao seu servidor (como um navegador da web ou similar, com um URL começando como http://PROXY:7121/... ).

Além disso, é altamente recomendável usar endereços IP no seu arquivo de configuração (em vez de nomes de host textuais).

Algo como isso deve funcionar para você:

[my_route]
client = yes
accept = 7121
connect = aaa.bbb.ccc.ddd:443
    
por 03.11.2014 / 04:58
0

Parece que esse problema exato foi solucionado nesta resposta na falha do servidor ; a parte em negrito parece adequada ao seu cenário:

The stunnel server has options = NO_SSLv3, but the client is trying to connect using SSLv3. You need to upgrade the client to support a newer version of SSL or you need to change the stunnel configuration to accept SSLv3.

    
por 03.11.2014 / 05:02
-1

adicionar isso ao arquivo de configuração serve.

sslversion = all

e você pode ter perdido outra coisa. você deve definir explicitamente "client = yes" ou o padrão é "no".

    
por 03.11.2014 / 04:19