0

我正在尝试设置一个 HTTPS 服务器,该服务器代理对更改目标的请求,这些目标也强制执行 HTTPS。这是因为我想设置一个拦截 https 代理、终止 ssl、修改数据并将加密修改发送到目标服务器(或通过响应向后)。

例子:

Browser --> myHTTPSProxy(modify request) --> https://targethost.com --> myHTTPSProxy(modify response) --> Browser

node-http-proxy 这是库中任务的示例实现:

const https = require('https'),
    fs = require('fs'),
    colors = require('colors'),
    httpProxy = require('http-proxy'),
    httpsOpts = {
        key: fs.readFileSync('agent2-key.pem', 'utf8'),
        cert: fs.readFileSync('agent2-cert.pem', 'utf8')
    };

// Create DUMMY HTTPS SRV
https.createServer(httpsOpts, function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.write('hello https\n');
    res.end();
}).listen(3000);

// PROXY
httpProxy.createServer({
    ssl: httpsOpts,
    target: 'https://localhost:3000',
    secure: false
}).listen(8080);

console.log('https proxy server'.blue + ' started '.green.bold + 'on port '.blue + '8080'.yellow);
console.log('https server '.blue + 'started '.green.bold + 'on port '.blue + '3000 '.yellow);

证书也从库中获取,我也尝试使用有效的证书,它们可以在直接的 https 服务器上运行,但不能作为代理。

作为代理 - 我明白了Secure Connection Failed

TL;DR 问题

有谁知道如何使用 nodejs 实现 HTTPS 代理服务器?

类似未解决的帖子:

带有 http-proxy 的 Nodejs 中的 Https 代理服务器(安全代理服务器)不起作用

https://github.com/http-party/node-http-proxy/issues/1456

https://github.com/http-party/node-http-proxy/issues/1506

4

0 回答 0