我使用heroku SSL插件在heroku上运行服务器。 使用以下选项创建服务器:
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'
});
然后调用一些这样的api client.get('/some-path',...)
然后客户端返回错误:
DEPTH_ZERO_SELF_SIGNED_CERT
我尝试在服务器和客户端上设置选项rejectUnauthorized
(作为构造函数选项),但它没有帮助......
答案 0 :(得分: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
而失败。
答案 1 :(得分:3)
对我来说rejectUnauthorized
没有用。
最后我最终得到了:
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
它有效......