4

我有服务器在 heroku 上运行,带有 heroku SSL 插件。使用以下选项创建服务器:

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

我像这样运行服务器:

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

它工作正常,我可以调用我的 api,例如:https ://myapp.herokuapp.com/some-path。heroku 上的 SSL 证书是自签名的,因此 webbrowser 中有一个很大的警告,但我可以单击继续,它可以工作。

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

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

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

DEPTH_ZERO_SELF_SIGNED_CERT

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

4

2 回答 2

4

对我来说rejectUnauthorized没有用。最后我结束了:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

它有效...

于 2014-01-08T12:55:24.513 回答
4

我刚刚使用自签名证书在自己的 HTTPS 服务器上进行了测试。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选项,测试就会失败并显示DEPTH_ZERO_SELF_SIGNED_CERT.

于 2014-01-08T07:30:19.460 回答