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

我正在使用节点twilio,我不断收到"Error: Unable to reach host: "api.twilio.com"为每个请求。我们已经通过mtr检查数据包,他们正在达到api.twilio.com。运行在GCE的debian上。

经过几天的挖掘,发现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+'"'; } } 

发生这种情况是因为您的链中有一个自签名证书,并且基础模块twilio依赖于请求 ,该请求会抛出以下错误: Error: SELF_SIGNED_CERT_IN_CHAIN但这不是node-twilio引发的错误部分)

有2个修复程序:

1.通过设置,告诉节点j忽略链中的自签名证书:

export NODE_TLS_REJECT_UNAUTHORIZED=0

  1. find自签名证书并从链中删除它。 这里是一个使用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证书?