can节点HTTPS服务器是在没有公钥和私钥的情况下创建的?

时间:2017-11-14 17:20:27

标签: node.js express

我正在使用expressjs创建一个http / https服务器。

有一种情况是服务器无法从目录中获取公共和私有证书文件。

在这种情况下,我使用http创建服务器并将原始HTML文件发送到客户端,表明存在问题,但这就是问题, 用户不知道他们需要转到 http 网址而不是 https 才能看到HTML文件。

因此,当我们尝试访问 http 网址时,我可以将用户重定向到 https 网址

init.js
    try {
      // options = get public and private certificate file
    } catch(e) {
      // accessError
    }

    if(accessError) {
     server = http.createServer();
    } else {
      server = https.createServer(options, (req, res) => {
         res.writeHead(200);
         res.end('hello world\n');
      });
     );
    }

server.listen(8080);


app.js

let app = require('express');

app.use((req, res, next) => {
   if(accessError) {
     res.sendFile(index.html);
   } else {
     next();
   }
});

index.html
<h1> there was an error <h1>

1 个答案:

答案 0 :(得分:0)

您可以在answer to this question中尝试301 Redirect

每当有人试图访问资源的http变体时,他们都会被重定向到https。

作为一项设计决策,我将无法检索证书视为致命错误。我想你会在开始的时候读它们。如果由于某种原因无法读取它们,则应该终止应用程序并记录异常。您需要进行一些监控,以便注意到事情尚未启动并在您无法找到时采取相应措施。但显示错误页面似乎比它的价值更麻烦。您将该应用程序置于 up 状态,但实际上并非如此。因为它无法做任何事情,你需要依靠客户告诉你它不起作用,并且有相关的消息等等。最好是努力工作。