如何在 Node.js 中使用 HTTPS

问题描述 投票:0回答:2

我对 HTTPS、SSL 等缺乏经验

我想知道如何将 Node.js 与 HTTPS 结合使用。我知道如何很好地使用node.js,但是当使用HTTPS时它会出错。

我想我需要安装一些东西(openSSL?)。我想知道我必须在 Windows 8.1 计算机上安装的所有内容(不,我不想获得任何形式的 linux。也没有 cygwin),以便使用 node.js HTTPS 服务器。

我不需要付费证书,我只需要让它发挥作用即可。它不接收来自浏览器的请求,所以我不关心付费证书。

node.js http ssl https openssl
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.pem
    ca-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-cert.pem /usr/local/share/ca-certificates/ca-cert.pem


  1. 更新CA商店:

    sudo update-ca-certificates


第 3 步:启动节点服务器

首先,确保您的

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 将 映射到您的服务器
  3. 使用 https://certbot.eff.org 将您的服务器升级到 HTTPS

在步骤 3 中,您在服务器上下载并运行 Certbot 应用程序。 Certbot 请求“YourWebsite.com”。然后,它向您颁发新的 HTTPS 证书,并修补您的服务器配置文件以使用 HTTPS 证书。

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

Certbot 很简单。 这是因为 Certbot 运行在您的服务器上,因此 HTTPS 证书颁发机构 (LetsEncrypt) 可以通过互联网与 Certbot 对话来验证您是否控制域名。

© www.soinside.com 2019 - 2024. All rights reserved.