Как настроить 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