簡體   English   中英

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

[英]How to configure https in sails.js with .crt file

我正在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

誰能指出我正確的方向?

我已經體驗到,您用於配置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端口上運行,則需要撥打“sudo sails lift”
  2. 文件路徑必須有效(在我的例子中,ssl目錄在項目根目錄中)
  3. 文件權限必須是可讀的文件(示例中的“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'
};

express和sailsJS已經發生了很大的變化。 所以你應該嘗試更新的例子。 我在這方面找不到很多例子。

只是為其他人已經提到的添加一些配置選項我想添加你可以指定要使用的密碼(在不應該使用的那些之前! ):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM