Por que o openssl s_client não está passando minha chave privada para proxytunnel?

1

Atualmente tenho o HAProxy configurado no meu PC doméstico e estou tentando acessá-lo por meio de um proxy HTTP. Atualmente estou acessando o prompt de logon SSH da seguinte forma:

openssl s_client->proxytunnel->HTTP(S) proxy->remote HAProxy->SSH server

Estou chegando ao ponto em que recebo o prompt SSH-2.0-OpenSSH , mas, por algum motivo, ele é interrompido no prompt e não passa pela chave privada.

Veja os comandos que estou executando no lado do cliente & como eu configuro o túnel de proxy para usar o proxy da organização:

proxytunnel -p httpproxy.organization.com:8080 -d ssh.homeserver.com:443 -a 7000

Em seguida, estou executando openssl da seguinte forma:

openssl s_client -connect localhost:7000 -quiet -key /home/user/.ssh/id_rsa

Mas, por algum motivo, o certificado não parece passar. Eu provavelmente estou perdendo um passo, então qualquer sugestão seria muito apreciada!

    
por slashp 14.11.2014 / 22:11

1 resposta

3

Você está confundindo os clientes de dois protocolos completamente diferentes.

A ferramenta openssl s_client é puramente um cliente TLS (SSL) ; é capaz de descascar a camada TLS que HAproxy ou stunnel podem adicionar. Uma vez feito isso, no entanto, ele simplesmente transfere dados arbitrários de uma ponta a outra. O prompt que você está vendo é o handshake SSH inicial e o servidor espera que você responda a ele; portanto, você ainda precisa executar um programa como ssh que falaria o protocolo SSH na parte superior do túnel TLS.

Normalmente, ssh conecta-se ao servidor diretamente no TCP, mas você pode usar a opção ProxyCommand para passar por outro programa:

ssh -o ProxyCommand="openssl s_client -connect localhost:7000 -quiet" dummyname

Se você tiver um par de chaves SSH, precisará especificá-lo como opção para ssh :

ssh -i ~/.ssh/id_workplace -o ProxyCommand.....

(Não precisa disso para ~/.ssh/id_rsa - ele é usado por padrão.)

As opções s_client -cert e -key são, obviamente, para autenticar no servidor TLS. No entanto, eles precisam de um certificado X.509 completo como "-cert"; apenas a chave pública não é suficiente, como seria para o SSH.

    
por 14.11.2014 / 22:38