¿Cómo crear un servidor HTTPS con Node.js?

El protocolo HTTP es uno de los protocolos más importantes para una comunicación fluida entre las redes, pero en el protocolo HTTP, los datos no están encriptados, por lo que cualquier información confidencial puede ser rastreada durante la comunicación, por lo que hay otra versión de HTTP, es decir, HTTPS, que encripta los datos. durante la transmisión entre un navegador y el servidor. En este artículo , discutiremos cómo podemos crear un servidor HTTPS usando Node.js.

Para construir un servidor HTTPS con nodeJs, necesitamos un certificado SSL (Secure Sockets Layer). Podemos crear un certificado SSL autofirmado en nuestra máquina local. Primero creemos un certificado SSL en nuestra máquina.

Paso 1: En primer lugar generaríamos un certificado autofirmado. Abra su terminal o git bash y ejecute el siguiente comando:

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

Después de ejecutar este comando, obtendremos algunas opciones para completar. Podemos mantener esas opciones predeterminadas o vacías ingresando ‘ . ‘ (punto). Completaríamos solo dos opciones para la corriente, ya que eso funcionaría bien para nosotros.

  • Nombre común (por ejemplo, servidor FQDN o su nombre): localhost
  • Dirección de correo electrónico: ************@****** (ingrese su correo electrónico)

Otras opciones, como el nombre del país, el nombre del estado o la provincia, el nombre de la localidad, el nombre de la organización y el nombre de la unidad organizativa, se explican por sí mismas y el sistema también proporciona su ejemplo como ayuda.

creando certificado SSL

Esto generaría dos archivos:

  • s erver.cert : el archivo de certificado autofirmado.
  • server.key : La clave privada del certificado.

Paso 2: Ahora codifiquemos el archivo index.html . Crearemos un formulario para enviar un mensaje al servidor a través de una solicitud POST.

index.html

<!DOCTYPE html>
<html lang="en">
  
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content
        ="width=device-width, initial-scale=1.0">
    <title>HTTPS Server</title>
</head>
  
<body>
    <h1>Welcome to HTTPS Server</h1>
    <br><br>
    <h3>Enter your message</h3>
  
    <!--  sending post request to "mssg" with 
        the message from the textarea -->
    <form action="mssg" method="post">
        <textarea name="message" id="" 
            cols="30" rows="10"></textarea>
        <button type="submit">Send</button>
    </form>
</body>
  
</html>

Paso 3: Ahora cree un archivo app.js. Inicializaríamos el proyecto usando npm en la terminal

npm init

También instalaríamos express para manejar las requests del servidor y body-parser para recibir información del formulario en la solicitud POST .

npm install express
npm install body-parser

Estructura del proyecto:

estructura de archivos

Paso 4: Ahora codificaremos el archivo app.js. En este archivo, creamos un servidor HTTPS utilizando la función createServer( ) . Pasamos el certificado y los archivos clave del certificado SSL como objeto de opciones en la función createServer(). Manejamos requests GET y POST usando express en NodeJs.

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");
});

Paso 5: Ejecute el archivo node app.js usando el siguiente comando:

node app.js

Ahora abra el navegador y escriba la dirección del servidor en ejecución:

https://localhost:3000/

Ahora vería una página web ejecutándose con HTTPS. Escriba su mensaje en el área de texto.

vista de página web

Ahora presione el botón enviar y véalo en su consola. La salida sería:

Salida en consola

Entonces, de esta manera, podemos crear un servidor HTTPS usando Node.js

Publicación traducida automáticamente

Artículo escrito por devrajkumar1903 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *