📜  如何使用 Node.js 创建 HTTPS 服务器?

📅  最后修改于: 2022-05-13 01:56:22.395000             🧑  作者: Mango

如何使用 Node.js 创建 HTTPS 服务器?

HTTP 协议是网络之间顺畅通信的最重要协议之一,但在 HTTP 协议中,数据未加密,因此任何敏感信息都可以在通信过程中被嗅探,因此还有另一个版本的 HTTP 即 HTTPS 加密数据在浏览器和服务器之间的传输过程中。在本文中,我们将讨论如何使用 Node.js 创建 HTTPS 服务器。

要使用 nodeJs 构建HTTPS服务器,我们需要 SSL(安全套接字层)证书。我们可以在本地机器上创建一个自签名 SSL 证书。让我们首先在我们的机器上创建一个 SSL 证书。

第 1 步:首先,我们将生成一个自签名证书。打开终端或 git bash 并运行以下命令:

openssl req -nodes -new -x509 -keyout server.key -out server.cert

运行此命令后,我们将获得一些选项来填充。我们可以通过输入 ' 将这些选项保持默认或为空 '(点)。我们只会为 current 填写两个选项,因为这对我们来说很好用。

  • 通用名称(例如服务器 FQDN 或您的姓名): localhost
  • 电子邮件地址 : *************@****** (输入您的电子邮件)

其他选项,如国家名称、州或省名称、地区名称、组织名称和组织单位名称是不言自明的,系统也会给出帮助示例。

创建 SSL 证书

这将生成两个文件:

  • s erver.cert :自签名证书文件。
  • server.key :证书的私钥。

第 2 步:现在让我们编写index.html文件。我们将创建一个表单以通过 POST 请求向服务器发送消息。

index.html


  

    
    
    
    HTTPS Server

  

    

Welcome to HTTPS Server

    

    

Enter your message

            
                      
  


app.js
// Requiring in-built https for creating
// https server
const https = require("https");
  
// Express for handling GET and POST request
const express = require("express");
const app = express();
  
// Requiring file system to use local files
const fs = require("fs");
  
// Parsing the form of body to take
// input from forms
const bodyParser = require("body-parser");
  
// Configuring express to use body-parser
// as middle-ware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
  
// Get request for root of the app
app.get("/", function (req, res) {
  
  // Sending index.html to the browser
  res.sendFile(__dirname + "/index.html");
});
  
// Post request for geetting input from
// the form
app.post("/mssg", function (req, res) {
  
  // Logging the form body
  console.log(req.body);
  
  // Redirecting to the root
  res.redirect("/");
});
  
// Creating object of key and certificate
// for SSL
const options = {
  key: fs.readFileSync("server.key"),
  cert: fs.readFileSync("server.cert"),
};
  
// Creating https server by passing
// options and app object
https.createServer(options, app)
.listen(3000, function (req, res) {
  console.log("Server started at port 3000");
});


第 3 步:现在创建一个app.js文件。我们将在终端中使用npm初始化项目

npm init

我们还将安装express来处理服务器请求和body-parser以从POST请求中的表单中获取输入。

npm install express
npm install body-parser

项目结构:

文件结构

第 4 步:现在我们将编写app.js文件。在这个文件中,我们使用 createServer( )函数创建一个 HTTPS 服务器。我们将 SSL 证书的证书和密钥文件作为选项对象传递给 createServer()函数。我们处理 GET 和 POST 在 NodeJs 中使用express请求。

应用程序.js

// Requiring in-built https for creating
// https server
const https = require("https");
  
// Express for handling GET and POST request
const express = require("express");
const app = express();
  
// Requiring file system to use local files
const fs = require("fs");
  
// Parsing the form of body to take
// input from forms
const bodyParser = require("body-parser");
  
// Configuring express to use body-parser
// as middle-ware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
  
// Get request for root of the app
app.get("/", function (req, res) {
  
  // Sending index.html to the browser
  res.sendFile(__dirname + "/index.html");
});
  
// Post request for geetting input from
// the form
app.post("/mssg", function (req, res) {
  
  // Logging the form body
  console.log(req.body);
  
  // Redirecting to the root
  res.redirect("/");
});
  
// Creating object of key and certificate
// for SSL
const options = {
  key: fs.readFileSync("server.key"),
  cert: fs.readFileSync("server.cert"),
};
  
// Creating https server by passing
// options and app object
https.createServer(options, app)
.listen(3000, function (req, res) {
  console.log("Server started at port 3000");
});

第 5 步:使用以下命令运行node app.js文件:

node app.js

现在打开浏览器并输入正在运行的服务器地址:

https://localhost:3000/

现在您会看到一个使用 HTTPS 运行的网页。在文本区域中写下您的信息。

网页视图

现在点击发送按钮并在您的控制台中查看它。输出将是:

控制台输出

所以,通过这种方式,我们可以使用 Node.js 创建一个 HTTPS 服务器