Pon en marcha un servidor https en Node.js con Express

Hoy explico cómo correr un servidor https en Node.js con Express. Supondré que tienes algunos conocimientos básicos de Node.js y de programación en general.

init

Pero también comentaremos algunas cosas desde el principio, así que si eres nuevo/a en este lenguaje, seguro que este post te será de utilidad. ¡Compártelo con tus amigos y amigas si es el caso!

Crear el archivo package.js

Así pues, lo primero de todo es ejecutar el comando init para crear el archivo package.json:

De este modo centralizamos la gestión de las dependencias y automatizamos esta tarea, cosa que siempre facilita el desarrollo de apps.

A continuación node nos hará algunas preguntas acerca de nuestra nueva aplicación.

En este ejemplo yo no me he molestado en introducir ninguna información y le he ido dando al intro todo el rato a medida que npm init me iba haciendo preguntas, así que node ha terminado creando este package.json:

A medida que vayas instalando los módulos que requiere tu nueva aplicación, con el comando npm install, asegúrate de añadir el parámetro --save justo después.

package.json

Esto es para añadir el nuevo módulo al archivo package.json, lo que es muy cómodo, porque siempre que dispongas del package.json es muy fácil instalar todas las dependencias de golpe con el comando npm install.

Instalar el módulo express

Nuestro servidor web correrá sobre Express, un framework muy popular que sirve para desarrollar aplicaciones web con Node.js.

De acuerdo a lo que hemos dicho, el comando:

Instalará el módulo express y también actualizará el archivo package.json:

Archivo index.js de un servidor http sencillo

Antes de desplegar nuestro primer servidor https, vamos a comenzar programando el servidor http más sencillo que te puedas imaginar. El código es este:

Fíjate que por tratarse de un servidor http (no https), el programa quedará a la espera escuchando solicitudes en el puerto 80. Si todo va bien pues, cuando ejecutes el programa desde la consola:

Tiene que salirte este mensaje:

De modo que si abres un navegador web y ejecutas: http://localhost/foo

En la consola de node te saldrá:

¡Felicidades! Acabas de programar tu primer servidor http en Node.js.

Graduate

Crear un certificado digital de servidor seguro con OpenSSL

Pasemos ahora de http a https. El paso más importante consiste en crear un certificado digital autofirmado para nuestro servidor. Si esto es nuevo para ti, por favor, lee este post para aprender cómo hacerlo.

Cuando tengas los archivos de los certificados, cópialos en la carpeta raíz de tu proyecto Node.js, la misma que contiene el archivo index.js.

A continuación verás que yo utilizo my_cert.key para la clave y my_cert.crt para el certificado digital. El primero tiene que empezar con algo así:

Y el segundo, empieza más o menos de esta manera:

Instalar los módulos fs y https

Necesitamos los módulos fs y https:

Finalmente, el código del servidor https es este:

¡Y esto es todo por hoy! Hemos terminado montado dos servidores: un http y un https. Espero que hayas aprendido cosas nuevas y que el artículo de hoy te haya servido para montar tu primer servidor https, con Node.js y con Express.