nodejs ssl“无法获得本地颁发者证书”

我已经获得SSL证书用于签署客户端请求以及相关的CA证书。 我可以使用openssl来validation它:

$ openssl s_client -CAfile /etc/ssl/foo/ca-combined.pem -servername foo.co.in -connect foo.co.in:443 CONNECTED(00000003) ... snip ... Verify return code: 0 (ok) --- closed 

(我将2个CA证书混合成一个文件)。 但是当我尝试使用节点复制它:

  var tls = require('tls'); var fs = require('fs'); var options = { host: 'foo.co.in', servername: 'foo.co.in', port: 443, key: fs.readFileSync('/etc/ssl/private/foo.key'), cert: fs.readFileSync('/etc/ssl/foo/cert.pem'), ca: [fs.readFileSync('/etc/ssl/foo/combined-ca.pem')] }; tls.connect(options, function(err) { done(err); }); 

我收到一个错误:

 Uncaught Error: unable to get local issuer certificate at Error (native) at TLSSocket.<anonymous> (_tls_wrap.js:1092:38) at TLSSocket._finishInit (_tls_wrap.js:610:8) at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:440:38) 

我在这里find了一个答案,build议我需要把每个CA证书放在一个单独的文件中:

 ca: [fs.readFileSync('/etc/ssl/foo/ca.pem'), fs.readFileSync('/etc/ssl/foo/root-ca.pem')] 

但是仍然给出了同样的错误。 (我也尝试颠倒顺序)。 然后,我尝试把中间证书放在客户端,并提供根CA证书作为CA(这似乎是文档的build议),同样的错误。 在这一点上,我正在用尽想法。 openssl开心的事实表明我做错了什么,有什么build议吗?

 $ node --version v6.10.1 

(我知道我可以把拒绝授予错误,但我真的不想)

事实certificate,我不需要提供CA证书,因为他们的CA已经由“已知”权威机构正确签署。 所以我可以从我的请求中删除ca字段。