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

Node.js 如何使用.crt文件在sails.js中配置https,node.js,ssl,sails.js,Node.js,Ssl,Sails.js,我在nodeJS上运行sailsJS,并试图设置HTTPS,但我似乎被卡住了。我可以访问我的站点,但不能访问 这个问题与之类似,只是我没有.pem文件,而是从Media Temple的QuickSL中获得的.crt和.key文件 这就是我在config/bootstrap.js中的内容 module.exports.bootstrap=函数(cb){ var fs=需要('fs'); sails.config.express.serverOptions={ key:fs.readFileSync

我在nodeJS上运行sailsJS,并试图设置HTTPS,但我似乎被卡住了。我可以访问我的站点,但不能访问

这个问题与之类似,只是我没有.pem文件,而是从Media Temple的QuickSL中获得的.crt和.key文件

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

module.exports.bootstrap=函数(cb){
var fs=需要('fs');
sails.config.express.serverOptions={
key:fs.readFileSync('/etc/ssl/private/mysite.com.key'),
证书:fs.readFileSync('/etc/ssl/crt/mysite.com.crt'),
ca:[fs.readFileSync('/etc/ssl/crt/mysite.com geotrust.crt')]
};
cb();
};
我在config/local.js中将端口号设置为443


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

我知道,您用于配置express的语法不适用于较新版本的SAIL,因此我对其进行了更新,并使用自签名证书。我将代码移到了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'
};
如果这不起作用,您可能需要考虑以下几点:

  • 如果您在443端口上运行,则需要呼叫“sudo sails lift”
  • 文件路径必须有效(在我的示例中,ssl目录位于项目根目录中)
  • 文件权限必须是可读的(示例中的“etc”通常仅由root用户可读/可执行)

  • sailsJS中SSL的官方文档仍在编写中,但我在网站上找到了它。在您的config/local.js中

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

    特快列车和帆船发生了很大的变化。所以你应该尝试新的例子。我找不到很多这样的例子。

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

    您还可以传递节点的tls文档页面上声明的其他选项:。

    我还发现 密码:“高:!aNULL:!MD5:!3DES”, 要获得更好的结果,请尝试通过


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

    能否显示local.js以及设置https服务器的位置。在我看来,您似乎正在将选项传递给express。Express不再创建https服务器,它需要https服务器。这不适用于我。不确定这是否是因为我使用的是“geotrust”签名证书。这为我设置了https,但稍后会导致req.session.passport未定义。(来自谷歌护照)。您可能知道是什么导致了这种情况吗?您还需要为会话设置这种情况:module.exports.express={customMiddleware:function(app){app.use(passport.initialize());app.use(passport.session());};
    express : {
            serverOptions : {
                key: fs.readFileSync('ssl/server.key'),
                cert: fs.readFileSync('ssl/server.crt')
            }
        };