15

我正在尝试设置本地 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 的任何想法?

4

6 回答 6

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')
    }

};

来源:https ://stackoverflow.com/a/28565113/2459071

于 2015-03-19T17:03:22.787 回答
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();
};
于 2013-07-22T03:07:48.020 回答
4

也许只有我一个人,但我可以让上述任何一个都适用于sails 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

于 2013-11-16T19:04:16.250 回答
3

这一贡献增强了支持本机移动应用程序和旧浏览器的解决方案。

当我只使用现代网络浏览器访问我的 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

于 2014-07-30T09:52:18.377 回答
2

以上不适用于sails v0.9.3。我最终得到了以下解决方法。(当然首先需要 fs)

express :  {serverOptions : {
    key: fs.readFileSync('ssl/server-key.pem'),
    cert: fs.readFileSync('ssl/server-cert.pem'),
}}
于 2013-08-26T10:19:31.117 回答
0

我在生产 Sails 应用程序(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()
}

我希望这会对某人有所帮助。

于 2018-05-30T13:19:11.330 回答