如何在Node.js中使用HTTPS

5

我对HTTPS、SSL等内容了解不多。

我想知道如何使用Node.js进行HTTPS。我对node.js的使用很熟悉,但在使用HTTPS时会出现错误。

我认为我需要安装一些东西(openSSL?)。我想知道在Windows 8.1电脑上使用node.js HTTPS服务器需要安装哪些东西(不,我不想使用任何形式的Linux。也不要cygwin),

我不需要付费证书,我只需要它能正常工作。它没有从浏览器接收请求,所以我不关心付费证书。


来自Node.js的文档:https://nodejs.org/en/knowledge/HTTP/servers/how-to-create-a-HTTPS-server/ - Rafael Emshoff
还有一个使用express.js的答案:https://dev59.com/IGgt5IYBdhLWcg3w5hWr#11745114 - Rafael Emshoff
2个回答

8
一旦您在系统上安装了Node.js,只需按照下面的步骤运行一个带有HTTP和HTTPS支持的基本Web服务器!
第1步:构建证书颁发机构
  1. 创建存储密钥和证书的文件夹:

    mkdir conf


  1. 进入该目录:

    cd conf


  1. 获取此 ca.cnf 文件以用作配置快捷方式:

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/ca.cnf


  1. 使用此配置创建新的证书颁发机构:

    openssl req -new -x509 -days 9999 -config ca.cnf -keyout ca-key.pem -out ca-cert.pem


  1. 现在我们已经拥有了位于 ca-key.pemca-cert.pem 的证书颁发机构,让我们为服务器生成私钥:

    openssl genrsa -out key.pem 4096


  1. 获取此 server.cnf 文件以用作配置快捷方式:

    wget https://raw.githubusercontent.com/anders94/https-authorized-clients/master/keys/server.cnf


  1. 使用此配置生成证书签名请求:

    openssl req -new -config server.cnf -key key.pem -out csr.pem


  1. 签署请求:

    openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" -in csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem


第2步:将您的证书安装为根证书
  1. 将您的证书复制到根证书文件夹中:

    sudo cp ca-crt.pem /usr/local/share/ca-certificates/ca-crt.pem


  1. 更新 CA 存储:

    sudo update-ca-certificates


第3步:启动您的 Node 服务器
首先,请确保 server.js 的代码看起来像这样:
var http = require('http');
var https = require('https');
var fs = require('fs');

var httpsOptions = {
    key: fs.readFileSync('/path/to/HTTPS/server-key.pem'),
    cert: fs.readFileSync('/path/to/HTTPS/server-crt.pem')
};

var app = function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}

http.createServer(app).listen(8888);
https.createServer(httpsOptions, app).listen(4433);
  1. 进入server.js所在的目录:

    cd /path/to


  1. 运行server.js :

    node server.js


0

2022年的答案

  1. 让你的node.js服务器在80端口上使用HTTP工作
  2. 使用DNS将<YourWebsite.com>映射到你的服务器
  3. 使用https://certbot.eff.org升级你的服务器到HTTPS

在第三步中,你需要在服务器上下载并运行Certbot应用程序。Certbot会要求输入"YourWebsite.com"。然后它会为你颁发一个新的HTTPS证书,并修补你的服务器配置文件以使用该HTTPS证书。

例如,我的node服务器在AWS EC2上运行,监听3000端口。我发现Ubuntu比Amazon自己的Linux更容易配置。我使用AWS Route53将域名映射到具有静态弹性IP地址的EC2实例。我在EC2中安装了Nginx,将客户端的80端口请求映射到我的3000端口的服务器上。Certbot会自动修补Nginx配置文件以使用新的HTTPS证书。

Certbot非常简单。这是因为Certbot在你的服务器上运行,所以HTTPS认证机构(LetsEncrypt)可以通过与Certbot在互联网上通信来验证你控制该域名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接