我在代理服务器中使用NodeJS的request库。
我的工作正常,但我想更改代理,以便将入站HTTP请求转发到 HTTPS 地址,而不是将HTTP请求转发到HTTP地址。
但是当我运行并尝试使用代理时,我收到以下错误:
stream.js:74 throw er; // Unhandled stream error in pipe. ^ Error: self signed certificate in certificate chain
我按照在线说明创建了密钥,crt和伪证书授权(链接到代码中),但上面的错误表明它仍然无法正常工作。
我做了什么明显的错误吗?
我的代码如下所示:
var certFile = path.resolve(__dirname, 'server.CA-signed.crt');
var keyFile = path.resolve(__dirname, 'server.CA.key');
var ca = path.resolve(__dirname, 'demoCA/newcerts/1234567890.pem');
app.use(function(req, res) {
var rewriter = request({
url: rewrite(req.url),
qs: req.query,
cert: fs.readFileSync(certFile),
key: fs.readFileSync(keyFile),
passphrase: 'foobar',
agentOptions: {
ca: ca
}
});
req.pipe(rewriter);
rewriter.pipe(res);
});
function rewrite(url) {
console.log('url: ', url)
var rewritten = 'https://example.com:9000'.concat(trimQuery(url));
console.log('rewritten: ', rewritten);
return rewritten;
}