如何用.crt文件在sails.js中configurationhttps

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

这个问题类似于如何在sails.js中configurationhttps,除了我没有.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

任何人都可以指向正确的方向吗?

我已经经历过,你用来configurationexpress的语法不适用于新版本的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端口上运行,你需要调用“sudo sails lift”
  2. 文件path必须是有效的(在我的情况下ssl目录是在项目的根目录)
  3. 文件权限必须对文件可读(在你的例子中“etc”通常只能由root用户读/可执行)

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

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

快递和帆船改变了很多。 所以你应该尝试更新的例子。 我找不到很多这方面的例子。

只是添加一些configuration选项,以他人已经提到的我想补充一点,你可以指定密码使用像这样(在那些不应该使用! ):

  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 。

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

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

作为从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') } };