Как настроить https в файле sails.js
Я пытаюсь настроить локальный сервер HTTPS для тестирования в Sails.js? Я не могу найти какой-либо указатель, как это сделать в sails.js? Для выражения,
var express = require('express');
var https = require('https');
var http = require('http');
var fs = require('fs');
// This line is from the Node.js HTTPS documentation.
var options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
// Create a service (the app object is just a callback).
var app = express();
// Create an HTTP service.
http.createServer(app).listen(80);
// Create an HTTPS service identical to the HTTP service.
https.createServer(options, app).listen(443);
Любая идея о sails.js?
Ответы
Ответ 1
Для sails.js версии 0.10 включите это в config/locals.js(если locals.js не существует, создайте его):
var fs = require('fs');
module.exports = {
ssl : {
key: fs.readFileSync('path-to-key.key'),
cert: fs.readFileSync('path-to-crt.crt')
}
};
Источник: fooobar.com/questions/489210/...
Ответ 2
Если вы используете последнюю версию v0.9 (и, возможно, некоторые версии v0.8), загляните внутрь config/bootstrap.js. Вы должны иметь доступ к вашему экспресс-приложению через контекст sails.express. Оттуда я думаю, что вы должны быть в состоянии сделать с ним то, что хотите...
Также кто-то из канала #sailsjs irc сказал, что это сработало для них
module.exports.bootstrap = function (cb) {
var fs = require('fs');
sails.config.express.serverOptions = {
key: fs.readFileSync('ssl/key.pem'),
cert: fs.readFileSync('ssl/cert.pem')
};
cb();
};
Ответ 3
Возможно, это только я, но я мог бы получить любой из вышеперечисленных действий для парусов v0.9.7, но я получил его работу, отредактировав файл config/local.js
следующим образом:
var fs = require('fs');
module.exports = {
port: process.env.PORT || 1337,
environment: process.env.NODE_ENV || 'development',
express: { serverOptions : {
key: fs.readFileSync('ssl/key.pem'),
cert: fs.readFileSync('ssl/cert.pem')
}
}
};
Теперь я не говорю, что это "правильный" способ сделать это, однако он работает для меня!
Бесстыдная самооценка
Подробнее об этом в моем блоге!
Конец бесстыдной саморекламы: D
Ответ 4
Вышеупомянутое не работает для парусов v0.9.3. Я закончил со следующим обходным решением. (сначала нужно fs)
express : {serverOptions : {
key: fs.readFileSync('ssl/server-key.pem'),
cert: fs.readFileSync('ssl/server-cert.pem'),
}}
Ответ 5
Этот вклад расширяет решение для поддержки родных мобильных приложений и старых браузеров.
Это решение работало очень хорошо для меня, когда при использовании современного веб-браузера для доступа к сайту SSL. Однако, когда я пытался делать запросы с использованием библиотеки AFNetworking, он не распознал сертификат SSL. Это было связано с приложением iPhone, требующим промежуточных SSL-сертификатов (иногда называемых пакетами ca).
Вы можете добавить промежуточный сертификат, используя следующий код.
express: {
serverOptions : {
key: fs.readFileSync('ssl/key.pem'),
cert: fs.readFileSync('ssl/cert.pem'),
ca: fs.readFileSync('ssl/intermediate.pem')
}
}
При создании промежуточного сертификата (который обычно может быть загружен с вашего поставщика сертификатов SSL) важно правильно получить заказ сертификатов.
Эта команда linux действительно помогла с отладкой.
openssl s_client -connect yoursite.com:443 -showcerts