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.
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:
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.
Ahora presione el botón enviar y véalo en su consola. La salida sería:
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