什么是UNABLE_TO_VERIFY_LEAF_SIGNATURE以及如何正确解决?

时间:2019-08-30 20:11:07

标签: node.js nginx https axios

我正在集成API(Rails和Node.js),当我的客户端从他的浏览器向node.js / express服务器发出请求时,我需要将来自node.js的请求发送到一个或多个Rails API 。但是当我尝试验证那些Rails API时,axios抛出UNABLE_TO_VERIFY_LEAF_SIGNATURE

所有API都在同一个EC2实例中,在nginx反向代理后面工作,该代理在不同的端口中处理它们,它们都在同一个域中,并且具有相同的公共证书,这在浏览器上可以正常工作。

A尝试过:

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';

这有效,但不安全!

var sslRootCAs = require('ssl-root-cas/latest')
sslRootCAs.inject()

没用

require('ssl-root-cas/latest')
  .addFile(__dirname + '/comodohigh-assurancesecureserverca.crt');

此代码适用于https客户端(My Node.js API),对吗? 该文件应该是我的服务器证书吗?如果这样不起作用

const instance = axios.create({
    baseURL: 'https://baseurl.com',
    httpsAgent: new https.Agent({
        ca: fs.readFileSync(`${path}CA.pem`),
        cert: fs.readFileSync(`${path}CERT.pem`),
        key: fs.readFileSync(`${path}KEY.pem`)
    })
});

再次,那些pem文件应该是我的服务器证书中的我的文件吗? 我只有一个钥匙和一个证书,我想从那里获取CA.pem?

那是我正在处理的代码:

    let credentials = {
        email: email,
        password: password
    };
    try {
        let auth_res;
        let res = [];
        for (let i = 0, items = iter$(this.urls()), len = items.length; i < len; i++) {
            let options = {
                url: ("" + items[i] + "/login"),
                method: 'POST',
                data: credentials
            };
            if (process.env.NODE_ENV == 'production') {
                options.httpsAgent = new (https.Agent)({
                    cert: fs.readFileSync("/home/ubuntu/certs/server.crt"),
                    key: fs.readFileSync("/home/ubuntu/certs/server.key")
                });
            };
            res.push(await axios(options));
        };
        auth_res = res;

        let res1 = [];
        for (let i = 0, items = iter$(auth_res), len = items.length; i < len; i++) {
            res1.push(items[i].headers);
        };
        return (this.setAuth_headers(res1),res1);
    } catch (err) {
        console.log(err);
        return this.res().status(500).send({errors: err});
    };

0 个答案:

没有答案