繁体   English   中英

我应该将密钥和证书存储在https服务器(Node.js)的哪里

[英]Where am I supposed to store my key and cert for an https server (Node.js)

我是ssl的新手,无法使用https设置节点项目。 我已经注册并从StartSSL获得了免费证书。 我的私钥存在于名为key.pem的文件中。 我已经验证了域名,并将我的证书保存在cert.pem文件中。

这是我在HTTP上设置服务器的方式:

    var server = require('http').createServer(app);
    var port = process.env.PORT || 3000;
    server.listen(port, function () {
      console.log('Server listening at port %d', port);
    });

这可以正常工作,相应地加载了我的所有页面。 这是我尝试设置https服务器的方式:

var https = require("https");
var fs = require("fs");
var key_file   = "key.pem";
var cert_file  = "cert.pem";
var passphrase = "...";
var config     = {
  key: fs.readFileSync(key_file),
  cert: fs.readFileSync(cert_file),
  passphrase: passphrase
};
var server = https.createServer(config,app).listen(443);

问题在于本地主机不会加载任何内容。 我的控制台没有出现任何错误,这很烦人,因为我不知道自己在做什么错。 如您所见,我只是将密钥和证书放在项目的根目录中,我不确定是否应该这样做。 我是否应该能够访问localhost:443或https:// localhost:443并查看我的网站? 我现在尝试按照6个教程进行学习,似乎无法解决任何问题。 我什至这样做对吗? 因为我没有从客户那里得到我认为应该做的任何证书。

也尝试过这也没有用:

var https = require("https");
var constants = require("constants");
var fs = require("fs");
 var passphrase = "...";
https.createServer({
    key: fs.readFileSync("key.pem"),
    cert: fs.readFileSync("cert.pem"),
    passphrase: passphrase,
    secureProtocol: 'SSLv23_method',
    honorCipherOrder: true,
    secureOptions: constants.SSL_OP_NO_SSLv3 | constants.SSL_OP_NO_SSLv2
}, function(req, res) {
    req.end("Hello, SSL World!");
}).listen(443, function() {
    console.log("SSL Proxy listening on port 443");
});

即使它说正在控制台中监听443,也无法获得世界。


编辑:这是我整个index.js,我仍然无法获得世界。 所有依赖项均已安装。 可能是什么问题?

var express = require('express');
var app = express();
var https = require("https");
var fs = require("fs");
var options = {
  key: fs.readFileSync('key.pem'),
  cert: fs.readFileSync('cert.pem')
};
https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8000);

我已经尝试过您的代码,并且可以正常工作。 但是你需要改变

req.end("Hello, SSL World!");

res.end("Hello, SSL World!");

否则,请尝试遵循此示例,该示例甚至更简单https://nodejs.org/api/https.html#https_https_createserver_options_requestlistener

请确保以root用户身份启动服务器,因为您正在使用端口443。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM