节点JS express-http-proxy:无法加载第一个证书

时间:2019-04-17 21:17:03

标签: node.js proxy

我在本地局域网上有一个节点js服务器,它根据req.hostname加载3个公共站点:

app.get('/*',function(req,res){
    console.dir(req.hostname);
    console.dir(req.path);
    var hostPath = '';
    var pagePath = '';
    if (req.path === '/') { pagePath = '/index' } else { pagePath = req.path }

    switch(req.hostname){
        case 'dom-1.com':
        case 'www.dom-1.com':
        hostPath = 'pages/dom-1';
        break;
        case 'dom-2.com':
        case 'www.dom-2.com':
        hostPath = 'pages/dom-2';
        break;  
        case 'dom-3.com':
        case 'www.dom-3.com':
        hostPath = 'pages/dom-3';
        break;
    }
    res.render(hostPath + pagePath);
});

在此代码之上,我尝试使用以下方法通过代理通过LAN 443为我的邮件服务器提供服务(通过端口443):

app.use('/mail/', proxy('https://192.168.0.87',{
    https: true
}));

但是从本地局域网外部的浏览器中加载https://mail.email.com/mail时得到了:

Error: unable to verify the first certificate
at TLSSocket.<anonymous> (_tls_wrap.js:1116:38)
at emitNone (events.js:106:13)
at TLSSocket.emit (events.js:208:7)
at TLSSocket._finishInit (_tls_wrap.js:643:8)
at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:473:38)

我们已经按照步骤验证了此服务器和邮件服务器上的证书是否相同

我们尝试做

require('https').globalAgent.options.ca = require('ssl-root-cas/latest').create();

但这会破坏事情,说https.createServer不是一个函数(在代码中进一步介绍)

如果有人对我们有建议,那就太棒了!

0 个答案:

没有答案