web-dev-qa-db-ja.com

httpのみのクライアントを使用してhttpsサービスに接続します

次のようなもので呼び出される単純なコマンドラインクライアントはありますか?

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

これにより、実際にhttps://example.comに接続することで、http://localhostに効果的に接続できるようになりますか? Windowsで動作する必要があります。

Stunnelを試しましたが、機能しないようです。

更新:

これが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
3
Distortum

stunnelisあなたが求めているもの:

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

これにより、リモートパーティ(この場合はGoogle)へのSSLセッションが設定され、ローカルホストポート8888にリスナーが作成されます。リスナーがまだない場合は80を使用できます。

次に、localhost:8888にアクセスすると、リモートサイトが表示されます。

Windowsを使用している場合、コマンドラインオプションはサポートされていないため、ファイルを作成しますstunnel.conf内のパラメータ:

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

それからそれを

stunnel -c stunnel.conf
3
Paul

Paulはほぼ正しかったのですが、WindowsではcはWindows stunnelのコマンドラインパラメーターではないため、構成ファイルにclient = yesを追加する必要があります。

次の設定は私のために働きます

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

Windowsのstunnelのコマンドラインバージョンであるため、stunnel.exeではなくtstunnel.exeを使用することになりました。コマンドは次のとおりです。

tstunnel remote_stunnel.conf
3
james

これが私が望むことをするnode.jsスクリプトです:

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/');

ホストとローカルポートは両方ともハードコードされていますが、コマンドラインパラメーターにするのは簡単です。

2
Distortum