错误:无法访问主机:“ api.twilio.com”

Roh*_*hit 2 node.js twilio

我正在使用node-twilio,并且"Error: Unable to reach host: "api.twilio.com"每次请求都得到一个。我们已经通过检查了数据包mtr,这些数据包已到达api.twilio.com。在GCE上运行debian。

Roh*_*hit 5

经过数天的挖掘,发现node-twilio模块错误地显示了许多错误,如下所示:

“错误:无法访问主机:“ api.twilio.com”。

以下几行:

var error = null;
if (err || (response && (response.statusCode < 200 || response.statusCode > 206))) {
    error = {};
    // response is null if server is unreachable
    if (response) {
        error.status = response.statusCode;
        error.message = data ? data.message : 'Unable to complete HTTP request';
        error.code = data && data.code;
        error.moreInfo = data && data.more_info;
    } else {
        error.status = err.code;
        error.message = 'Unable to reach host: "'+client.host+'"';
    }
}
Run Code Online (Sandbox Code Playgroud)

发生这种情况是因为您的链中有一个自签名证书,并且twilio依赖的基础模块is is request,它Error: SELF_SIGNED_CERT_IN_CHAIN引发以下错误: 但这不是node-twilio引发的错误(错误传播本身)

有2个修复程序:

1.通过设置以下内容告诉nodejs忽略链中的自签名证书:

export NODE_TLS_REJECT_UNAUTHORIZED=0

  1. 找到自签名证书,并将其从链中删除。这是使用openssl的示例:https : //serverfault.com/questions/590870/how-to-view-all-ssl-certificates-in-a-bundle

参考文献:

https://github.com/request/request

https://github.com/twilio/twilio-node/blob/45858420688854494c2ed476a1997773c33a32a0/lib/Client.js

使用https.request忽略node.js中无效的自签名ssl证书吗?