restify JSON客户端返回DEPTH_ZERO_SELF_SIGNED_CERT错误

我有服务器与heroku SSL插件在heroku上运行。 服务器是用这个选项创build的:

name: 'ServerName', version: '1.0.0', 

而我运行这样的服务器:

  server.listen(process.env.PORT || 5000) 

它工作正常,我可以打电话给我的API例如: https : //myapp.herokuapp.com/some-path 。 heroku上的SSL证书是自签名的,所以在浏览器中有一个很大的警告,但我可以点击继续,它的工作原理。

当我想用restify JSON客户端调用我的服务器时,创build如下:

 var client = restify.createJsonClient({ url: 'https://myapp.herokuapp.com' }); 

然后调用一些像这样的client.get('/some-path',...)然后客户端返回错误:

 DEPTH_ZERO_SELF_SIGNED_CERT 

我试图设置选项rejectUnauthorized服务器和客户端(作为构造选项),但它并没有帮助…

我刚刚使用自签名证书在自己的HTTPS服务器上进行了testing。 rejectUnauthorized在客户端应该为你解决

 var restify = require('restify'), client = restify.createJsonClient({ url: 'https://127.0.0.1/booking', rejectUnauthorized: false }), assert = require('assert'); describe('/booking/ component\'s JSON-HAL HTTP API description', function () { it('responds with status 200', function (done) { client.get('/', function (error, request, response) { assert(!error); assert.strictEqual(response.statusCode, 200); done(); }); }); }); 

一旦我删除了rejectUnauthorized选项,testing就会以DEPTH_ZERO_SELF_SIGNED_CERT失败。

对于我rejectUnauthorized没有工作。 最后,我结束了:

 process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 

它的工作原理