2013-07-19 3 views
11

Я пытаюсь настроить локальный сервер HTTPS для тестирования в Sails.js? Я не могу найти какой-либо указатель, как это сделать в sails.js? Для экспресс,Как настроить https в 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?

+0

http://jsbot.io/node/http-and-https-handle-with-sailsjs –

+0

[Проверьте этот ответ на StackOverflow] (http://stackoverflow.com/a/37432523/3567365) – user3567365

ответ

4

Если вы используете последнюю версию 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(); 
}; 
+1

Kelt, его рабочий тон. Для локального тестирования мы должны использовать 8443 вместо 443, чтобы избежать некоторых осложнений. – lostShip

+0

это нормально, если они являются .key и .cert файлами? Нужно ли им быть .pems? – light24bulbs

2

выше не работает для парусов v0.9.3. Я закончил со следующим обходным решением. (Требуется фс первых, конечно)

express : {serverOptions : { 
    key: fs.readFileSync('ssl/server-key.pem'), 
    cert: fs.readFileSync('ssl/server-cert.pem'), 
}} 
4

Может быть, это только меня, но я мог бы получить либо из вышеперечисленного работает парусами 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') 
    } 
    } 
}; 

Теперь я не говорю, что это «правильный» способ сделать это, однако он работает для меня!

Shameless продвижения собственного More about this on my blog! Конец бесстыдное сам поощрение: D

+0

Другие два метода дали мне ошибку соединения SSL в браузере, когда я попытался подключиться, но эта работа работала нормально. – crzrcn

2

Этот вклад усиливает решение для поддержки родных мобильных приложений и старых браузеров.

Это решение отлично подойдет для меня, когда вы просто используете современный веб-браузер для доступа к сайту 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

9

Для sails.js версии 0.10, включить это в конфигурации/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') 
    } 

}; 

Источник: https://stackoverflow.com/a/28565113/2459071

+0

Это работало с v0.11.2. Я бы добавил, что если вы хотите, чтобы он настроен для каждой среды, эта конфигурация, вероятно, послужит вам лучше в development.js или production.js. Local.js больше предназначен для локальной среды разработчика, которая никогда не проверяется на подрывную деятельность. – ryanm

+0

Это должно сработать. http://jsbot.io/node/http-and-https-handle-with-sailsjs –

+0

Спасибо @NishchitDhanani! – JosMarRivera

Смежные вопросы