9

我在 nodeJS 上运行sailsJS 并尝试设置HTTPS,但是我似乎被卡住了。我可以在http://example.com:443访问我的网站,但不能在https://example.com

这个问题类似于如何在sails.js 中配置https,只是我没有.pem 文件,而是我从Media Temple 的QuickSSL 获得的.crt 和.key 文件。

这就是我在config/bootstrap.js中的内容

module.exports.bootstrap = function (cb) {
    var fs = require('fs');
    sails.config.express.serverOptions = {
        key: fs.readFileSync('/etc/ssl/private/mysite.com.key'),
        cert: fs.readFileSync('/etc/ssl/crt/mysite.com.crt'),
        ca: [fs.readFileSync('/etc/ssl/crt/mysite.com-geotrust.crt')]
    };
    cb();
};

我在config/local.js 中将端口号设置为 443

谁能指出我正确的方向?

4

5 回答 5

3

我经历过您用于配置 express 的语法不适用于较新版本的sails,因此我对其进行了更新,并且它适用于自签名证书。我将代码移动到 local.config 文件,因为它实际上是一个环境设置......我没有尝试过的一件事是证书颁发机构。

这是我的 config.local 文件的样子:

var fs = require('fs');

module.exports = {
  express: { serverOptions : {
      key: fs.readFileSync('ssl/mysite.key'),
      cert: fs.readFileSync('ssl/mysite.com.crt')
    }
  },
  port: process.env.PORT || 443,
  environment: process.env.NODE_ENV || 'development'
};

如果这不起作用,你可能想看看一些事情:

  1. 如果您在端口 443 上运行,则需要调用“sudosails lift”
  2. 文件路径必须有效(在我的情况下,ssl 目录位于项目根目录中)
  3. 文件的文件权限必须是可读的(您的示例中的“等”通常只能由 root 用户读取/可执行)
于 2013-11-17T07:32:02.730 回答
1

SailsJS 中 SSL 的官方文档仍在工作中,但我在部署页面上找到了这个。在你的config/local.js

module.exports.port = 80;
module.exports.environment = 'production';
module.exports.ssl = {
    cert: 'path/to/cert',
    key: 'path/to/key'
};

express 和sailsJS 变化很大。所以你应该尝试更新的例子。我找不到很多这方面的例子。

于 2013-11-20T04:41:27.553 回答
1

只是为了向其他人已经提到的内容添加一些配置选项,我想补充一点,您可以像这样指定要使用的密码(在那些不应该使用的密码之前!):

  express: { serverOptions : { 
    key: fs.readFileSync('ssl/key.pem'),
    cert: fs.readFileSync('ssl/cert.pem'),
    ciphers: "DHE-DSS-AES256-GCM-SHA384:DHE-DSS-AES256-SHA:AES256-GCM-SHA384:DHE-DSS-AES128-SHA:DHE-DSS-AES128-SHA256:AES256-SHA256:AES128-GCM-SHA256:!AES256-SHA",
    honorCipherOrder: true //  this is necessary to make the ciphers order matter
    }   
  }

您还可以传递节点的 tls 文档页面上所述的其他选项:http ://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener 。

于 2014-01-30T21:17:07.223 回答
0

作为从 0.9 到 0.10 的更新,local.js 文件现在应该有

ssl : {
key: fs.readFileSync(‘server.key’),
cert: fs.readFileSync(‘server.crt’)
}

代替

express : {
        serverOptions : {
            key: fs.readFileSync('ssl/server.key'),
            cert: fs.readFileSync('ssl/server.crt')
        }
    };
于 2015-02-17T15:36:19.667 回答
0

我还发现使用密码:“HIGH:!aNULL:!MD5:!3DES”,会产生更好的结果,尝试通过检查

https://www.ssllabs.com/ssltest/analyze.html

于 2014-12-22T15:21:32.390 回答