我正在尝试设置一个 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 代理服务器(安全代理服务器)不起作用