次のようなもので呼び出される単純なコマンドラインクライアントはありますか?
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
stunnel
isあなたが求めているもの:
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
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
これが私が望むことをする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/');
ホストとローカルポートは両方ともハードコードされていますが、コマンドラインパラメーターにするのは簡単です。