HTTPS en Node.js

HTTP: cuando la transferencia de datos en el protocolo HTTP, solo viaja en formato de texto claro. 
HTTPS: simplemente realiza el cifrado cuando la solicitud viaja desde el navegador al servidor web, por lo que es difícil rastrear esa información. Básicamente funciona en dos cosas: 
 

  • SSL (capa de conexión segura)
  • TLS (Seguridad de la capa de transporte)

Ambos utilizan una PKI (infraestructura de clave pública) 
 

  • Si no puede pagar un certificado SSL, la otra alternativa es que hay muchos servicios de pago que pueden proporcionarle una API para integrar en su sitio web, es decir, puede tener su sitio web en un canal no seguro (HTTP) y siempre que haya es un pago, simplemente redirige al usuario a ese servicio de pasarela de pago.
  • HTTPS es un módulo separado en Node.js y se usa para comunicarse a través de un canal seguro con el cliente. HTTPS es el protocolo HTTP sobre SSL/TLS (protocolo HTTP seguro).

Hay varias ventajas en esta capa adicional: 
 

  • La Integridad y la Confidencialidad están garantizadas, ya que la conexión se cifra de forma asimétrica.
  • Obtenemos autenticación al tener claves y certificados.

Un ejemplo para configurar el servidor HTTPS con Node.Js es el siguiente: 
 

  • Primero crearemos un archivo homepage.html, este archivo homepage.html tendrá un código HTML de creación de una página web, es decir, la página que se mostrará cuando el usuario la solicite o ingrese la URL de la misma.
  • El archivo homepage.html también tendrá un recurso homepage.css
  • Cuando el navegador intente obtener el recurso homepage.css, lo arrojará al servidor, el servidor creará un encabezado de respuesta, para que el navegador sepa cómo analizar el archivo.
  • El código que se muestra a continuación está escrito en un tercer archivo guardado como archivo .js.

javascript

<script>
(function() {
   
// Reading and writing to files in Node.js
// working with directories or file system
var fs = require("fs"); 
     
// Responsible for creating HTTPS server
// taking options for the server
// options like where your certificates 
// and private key files are located
// also take actual request and response server
// code for parsing web pages from files
var https = require("https");
   
// Helps with mimetypes in creating our response header
var path = require("path"); 
   
// "text/css" is added in response header 
// so browser knows how to handle it 
var mimetypes = {
    "css":"text/css",
    "html":"text/html"
};
   
// Options is used by the servers
// pfx handles the certificate file
var options = {
    pfx: fs.readFileSync("ssl/cert.pfx"),
    passphrase: "encrypted"
};
   
var server = https.createServer(options, function(request, response) {
   
    // If the url is empty
    if (request.url == "" || request.url == "/") {
        request.url = "homepage.html";
    }
      
    // __dirname is the directory where we are getting
    // these files from __dirname holds the file route
    // request.url is the index.html we made earlier
    // function is the callback function that holds two
    // parameters
    fs.readFile(__dirname + "/" + request.url, function(err, content) {
        if (err) { 
            console.log("Error: " + err);
        } 
        else { 
       
            // 200 is code for OK
            // content-Type is the object or the content header
            response.writeHead(200, 
    {'Content-Type':mimetypes[path.extname(request.url).split(".")[1]]});
            response.write(content); 
        }
              
        // This will send our response back to the browser
        response.end();
    });
});
     
server.listen("port number", "IP Address", function() {
   
    console.log("Server has started!");
}); 
   
})();
</script>

Salida: cualquiera que sea el número de puerto y la dirección IP que se le dé al servidor, escuche, ejecutará esa única página web siempre que se solicite. Y esta página web será un HTTPS.
 

Publicación traducida automáticamente

Artículo escrito por vedantsharma674 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 *