如何使用.crt文件在sails.js中配置https

时间:2013-11-13 00:00:31

标签: node.js ssl sails.js

我正在nodeJS上运行sailsJS并且我正在尝试设置HTTPS,但是我似乎陷入困境。我可以在http://example.com:443访问我的网站,但不能访问https://example.com

这个问题类似于how to configure https in sails.js,除了我没有.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

有人能指出我正确的方向吗?

5 个答案:

答案 0 :(得分:3)

我已经体验过,您用来配置快递的语法不适用于较新版本的风帆,所以我更新了它并使用自签名证书。我将代码移动到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端口上运行,则需要拨打" sudo sails lift"
  2. 文件路径必须有效(在我的情况下,ssl目录位于项目根目录中)
  3. 文件权限必须是可读的文件('等等'在您的示例中通常只能由root用户读取/执行)

答案 1 :(得分:1)

sailsJS中SSL的官方文档仍然有效,但我在deployment page上发现了这一点。在 config / local.js

module.exports.port = 80;
module.exports.environment = 'production';
module.exports.ssl = {
    cert: 'path/to/cert',
    key: 'path/to/key'
};
快递和sailsJS已经发生了很大的变化。所以你应该尝试更新的例子。我在这方面找不到很多例子。

答案 2 :(得分: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

答案 3 :(得分:0)

我也发现使用了 密码:“HIGH:!aNULL:!MD5:!3DES”, 将制造商更好的结果,尝试检查

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

答案 4 :(得分: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')
        }
    };