Conecte-se a um serviço https usando um cliente somente http

2

Existe um cliente de linha de comando simples que seria chamado assim:

http2https --listen localhost:80 --connect example.com:443

que, então, permitiria que eu me conectasse efetivamente a https://example.com , na verdade, conectando-se a http://localhost ? Ele precisaria trabalhar no Windows.

Eu tentei stunnel, mas parece que não funciona.

Atualização:

Aqui está a saída de stunnel.exe -c -r google.com:443 -d 127.0.0.1:8888

No limit detected for the number of clients
stunnel 4.56 on x86-pc-msvc-1500 platform
Compiled/running with OpenSSL 1.0.1e-fips 11 Feb 2013
Threading:WIN32 Sockets:SELECT,IPv6 SSL:ENGINE,OCSP,FIPS
Reading configuration from file -c
Cannot read configuration

Syntax:
stunnel [ [-install | -uninstall] [-quiet] [<filename>] ] | -help | -version | -sockets
    <filename>  - use specified config file
    -install    - install NT service
    -uninstall  - uninstall NT service
    -quiet      - don't display a message box on success
    -help       - get config file help
    -version    - display version and defaults
    -sockets    - display default socket options

Server is down
    
por Steve Taylor 13.04.2013 / 08:07

3 respostas

3

stunnel é o que você procura depois:

sudo stunnel -c -r google.com:443 -d 127.0.0.1:8888

Isso configura uma sessão SSL para a parte remota (o Google, neste caso) e cria um ouvinte na porta 8888 do host local. Você pode usar 80 se ainda não tiver um ouvinte.

Então você acessa o localhost: 8888 e você obterá o site remoto.

Se você estiver usando o Windows, as opções de linha de comando não serão suportadas. Portanto, crie um arquivo stunnel.conf com os parâmetros em:

[remote]
accept = 8888
connect = google.com:443

Em seguida, chame-o com

stunnel -c stunnel.conf
    
por 13.04.2013 / 08:23
3

Paul estava quase certo, mas no Windows você precisa adicionar client = yes ao arquivo de configuração, já que -c não é um comando parâmetro de linha para janelas stunnel.

A configuração a seguir funciona para mim

[remote]
client = yes
accept = 8888
connect = google.com:443

Acabei usando tstunnel.exe em vez de stunnel.exe, já que essa é a versão da linha de comando do stunnel no Windows. Aqui está o comando:

tstunnel remote_stunnel.conf
    
por 21.12.2017 / 01:45
2

Aqui está um script node.js que faz o que eu quero:

var http = require('http');
var https = require('https');

http.createServer(function (req, resp) {
    var h = req.headers;
    h.host = "www.example.com";
    var req2 = https.request({ host: h.host, port: 443, path: req.url, method: req.method, headers: h }, function (resp2) {
        resp.writeHead(resp2.statusCode, resp2.headers);
        resp2.on('data', function (d) { resp.write(d); });
        resp2.on('end', function () { resp.end(); });
    });
    req.on('data', function (d) { req2.write(d); });
    req.on('end', function () { req2.end(); });
}).listen(9999, "127.0.0.1");
console.log('Server running at http://127.0.0.1:9999/');

O host e a porta local são ambos codificados, mas seria bastante fácil torná-los parâmetros de linha de comando.

    
por 18.04.2013 / 09:03