我正在尝试设置本地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的任何想法?
答案 0 :(得分:12)
对于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')
}
};
答案 1 :(得分: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();
};
答案 2 :(得分: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')
}
}
};
现在我不是说这是'正确'的方法,但这对我有用!
无耻的自我推销 More about this on my blog! 结束无耻的自我推销:D
答案 3 :(得分:3)
此贡献增强了支持本机移动应用程序和旧浏览器的解决方案。
当我使用现代网络浏览器访问我的SSL网站时,这个解决方案对我来说非常有用。但是,当我尝试使用AFNetworking库发出请求时,它无法识别SSL证书。这是因为iPhone应用程序需要中间SSL证书(有时称为ca bundle)。
您可以使用以下代码添加中间证书。
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
答案 4 :(得分:2)
以上不适用于风帆v0.9.3。我最终得到了以下解决方法。 (首先要求fs)
express : {serverOptions : {
key: fs.readFileSync('ssl/server-key.pem'),
cert: fs.readFileSync('ssl/server-cert.pem'),
}}
答案 5 :(得分:0)
我在生产帆应用程序(v0.11.x和v0.12.x)中也遇到过这种问题。 Android发行版apk无法连接到sails应用程序,而某些旧版本浏览器不接受带有Web应用程序的SSL证书。
我得到了一些中间证书错误,如下所示
The certificate is not trusted in all web browsers. You may need to install an Intermediate/chain certificate to link it to a trusted root certificate.
最后,我找到了解决方案
ssl: {
ca: require('fs').readFileSync('ssl/intermediate.crt', 'utf8').toString(),
key: require('fs').readFileSync('ssl/example_com.key', 'utf8').toString(),
cert: require('fs').readFileSync('ssl/main.crt', 'utf8').toString()
}
我希望这会对某人有所帮助。