如何在sails.js中configurationhttps

我正在尝试在Sails.js中设置一个本地HTTPS服务器进行testing? 我无法find任何指针如何在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的想法?

对于sails.js版本0.10,将其包含在config / locals.js中(如果locals.js不存在,则创build它):

 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

如果你使用的是最新版本的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(); }; 

也许这只是我,但我可以得到上述任何一个工作的风帆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

以上不适用于风帆v0.9.3。 我结束了以下解决方法。 (当然首先需要fs)

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

这个贡献增强了支持原生移动应用程序和旧浏览器的解决scheme。

这个解决scheme在我使用现代networking浏览器来访问我的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') } } 

在创build中间证书(通常可以从您的SSL证书提供商处下载)时,正确获取证书的顺序非常重要。 这个linux命令真的帮助了debugging。

openssl s_client -connect yoursite.com:443-showcerts