Instalación de un certificado SSL en Node.js – Alojamiento –

¿No tienes tiempo para instalar SSL? Intentar .

Prefacio

Una vez emitido el certificado SSL, se debe implementar en el servidor web para habilitar las conexiones HTTPS. Tras la emisión, la autoridad certificadora (Comodo/Sectigo) enviará por correo electrónico los archivos del certificado; Estos archivos también estarán disponibles para descargar desde su cuenta como se describe.

Este artículo cubrirá la implementación de certificados para y . Puede saltar a las secciones correspondientes desde la tabla de contenido a continuación.

Tabla de contenido

Actualmente, la versión LTS de Node.js es 10.15.0 y la última versión de Express es 4.16.4. Estas versiones se utilizarán y se hará referencia a ellas a lo largo de esta guía.

Nota: Esta guía también asume conocimientos básicos de JavaScript, ya que Node.js es un entorno de ejecución de JavaScript, así como conceptos básicos de Node.js y/o Express.

Requisitos previos

La instalación del certificado SSL requiere los archivos de certificado proporcionados por la autoridad certificadora, así como la clave privada correspondiente para el certificado SSL.

Estos archivos deben cargarse en su servidor (o dondequiera que se encuentre la aplicación Node.js) antes de continuar con los siguientes pasos:

  • Certificado (normalmente un archivo .crt).
  • Paquete/cadena de CA (normalmente un archivo .ca-bundle).
  • Clave privada (normalmente un archivo .key).

La clave privada se genera antes de la activación del certificado, normalmente al mismo tiempo que la Solicitud de firma de certificado (CSR). Incluso si tienes la clave privada, vale la pena comprobar que es la correcta cotejándola con tu certificado SSL en formato .

Tenga en cuenta: si bien los archivos se pueden colocar en cualquier directorio, asegúrese de que el directorio que contiene la clave privada no sea público. La clave privada debe almacenarse de forma segura en el servidor sin ningún acceso público.

Si no está seguro de dónde encontrar la clave privada, le sugerimos que consulte el artículo. En caso de que la clave privada se pierda o no haya forma de recuperarla, siempre podrá recuperar su certificado con un nuevo par.

Importante: Al descargar archivos de certificado desde su cuenta de , también recibirá un archivo .p7b (certificado PKCS#7). Este archivo no es la clave privada y no será necesario para la instalación.

Importar archivos de certificados a su aplicación

Las capacidades SSL/TLS de Node.js se basan en la biblioteca OpenSSL, por lo que es flexible en la forma en que acepta archivos de certificados SSL. Los archivos se pueden leer como buffers o como texto (especificando la codificación UTF-8) usando el módulo, o simplemente se pueden proporcionar como cadenas con el código de certificado en formato PEM.

En la mayoría de los casos, se prefiere la forma más sencilla, que es leer los archivos del certificado SSL del sistema de archivos como se muestra a continuación:

See also  - Acuerdo de términos universales de servicio

constante fs = requerir('fs');

constante certificado = fs.readFileSync('./ruta/al/cert.crt');
constante ca = fs.readFileSync('./ruta/al/ca.crt');
constante clave = fs.readFileSync('./ruta/a/la/clave.privada');

Las rutas a estos archivos pueden ser relativas o absolutas. Siéntase libre de utilizar el módulo para crear las rutas en lugar de utilizar cadenas simples.

A continuación se muestra un ejemplo de configuración cuando se cargan los archivos:

En este ejemplo, el directorio ssl se creó específicamente para archivos relacionados con SSL y los archivos se leen desde allí. El certificado, California y llave Las constantes contienen las representaciones respectivas del certificado SSL, el paquete de CA y los archivos de clave privada.

Importante: A partir de la versión 5.2.0 de Node.js se admiten varios certificados en un único archivo (que normalmente es necesario para el archivo del paquete de CA). Si está utilizando una versión anterior de Node.js, deberá proporcionar una serie de certificados de CA como se muestra a continuación.

La versión de Node.js que ha instalado se puede verificar ejecutando node -v.

Si está utilizando Node.js 5.2.0 o superior, puede omitir esta sección y pasar directamente a o .

En caso de que esté utilizando una versión de Node.js anterior a la 5.2.0, puede seguir las instrucciones a continuación para dividir el paquete de CA en certificados SSL separados.

Puede separar manualmente el archivo .ca-bundle en archivos de certificado separados utilizando cualquier editor de texto y cargarlos en una matriz. O puede separar el archivo .ca-bundle dentro de su aplicación. A continuación se proporcionan ejemplos de ambos:

Usando múltiples archivos de certificado de CA:

constante ca = ;

Si separa los archivos manualmente, asegúrese de proporcionarlos en el mismo orden en que están en el archivo .ca-bundle.

Separando el archivo dentro de la aplicación:

constante caBundle = fs.readFileSync('./ssl/ejemplo.ca-bundle'{codificación:'utf8'});
constante ca = caBundle.split('—–FIN DEL CERTIFICADO—–\r\n') .map(cert => certificado +'—–FIN DEL CERTIFICADO—–\r\n');
// Tuvimos que eliminar un elemento adicional que está presente debido a
// una línea adicional al final del archivo.
// Esto puede ser necesario o no dependiendo del formato
// de su archivo .ca-bundle.

ca.pop();
consola.log(ca);

El resultado de ejecutar el código anterior debería ser una serie de certificados como se muestra a continuación:

HTTPS en Node.js

Creando un servidor HTTPS

El servidor HTTPS se crea utilizando el método que toma un opciones object como primer argumento y la devolución de llamada del oyente de solicitud como segundo. El opciones El objeto debe contener las siguientes propiedades:

  • certificado – el certificado
  • California – el paquete CA (cadena) proporcionado en un archivo o como una matriz
  • llave – la clave privada

Se pueden agregar opciones adicionales al objeto si es necesario.

Tenga en cuenta: si tiene el certificado en formato .pfx (PKCS#12), puede usarlo proporcionando un opciones objeto con el pfx propiedad que contiene el archivo pfx y un frase de contraseña propiedad si es necesario.

See also  Logotipos de diseño de interiores gratuitos: cree su propio logotipo de interiores en línea

Como siempre, puedes crear el objeto antes de llamar al método, o puedes pasar un objeto anónimo con las propiedades requeridas, como se muestra a continuación:

dejar opciones = {

certificado: certificado, // fs.readFileSync('./ssl/example.crt');

California: California, // fs.readFileSync('./ssl/example.ca-bundle');

llave: llave // fs.readFileSync('./ssl/example.key');
};

// también está bien: https.createServer({cert, ca, key}, (req, res) => {…
constante httpsServer = https.createServer(opciones, (req, res) => {

res.statusCode = 200;

res.setHeader('Tipo de contenido', 'texto/html');

res.end(“”);
});

Al final, el código repetitivo del servidor debería verse así:

Aquí importamos los archivos de certificado a un objeto en las líneas 7-11, luego pasamos este objeto al crearservidor método en la línea 13 que crea el servidor HTTPS y finalmente llame al método en la línea 19 para iniciar el servidor.

Asegúrese de reiniciar su aplicación Node.js si ya se estaba ejecutando para aplicar los cambios. Para iniciar la aplicación, simplemente puede ejecutar el nodo .js en el directorio con su aplicación, donde .js es el archivo de inicio de su aplicación.

¡Esto completa la configuración! Puede utilizar la siguiente herramienta para verificar la instalación del certificado SSL ingresando el nombre de host correspondiente y el puerto que está utilizando: https://decoder.link

Redirigir a HTTPS

Para redirigir solicitudes HTTP a HTTPS, también deberá configurar un servidor HTTP con el módulo.

En esencia, redirigir una solicitud HTTP a otra URL requiere dos cosas: el código de respuesta correspondiente (301 o 302) y el encabezado HTTP “Ubicación” con la URL que debe usarse en su lugar.

A continuación puede encontrar un ejemplo de cómo se puede configurar un servidor HTTP de este tipo:

constante http= requerir('http');
constante nombre de host = 'dominioejemplo.com';
constante httpServer = http.createServer((solicitud, res) => {

res.statusCode = 301;

res.setHeader('Ubicación', `https://${nombre de host}${req.URL}`);

res.end(); // asegúrate de llamar a send() o end() para enviar la respuesta
});
httpServidor.escuchar(80);

En el ejemplo anterior, también pasamos la URL solicitada desde req.URL.

Si antes entregaba todo el contenido a través de HTTP y desea cambiar a HTTPS y configurar la redirección, la forma más sencilla debería ser simplemente , y eso redirigirá las solicitudes.

A continuación puede ver una solicitud realizada a dicho servidor HTTP con una URL personalizada:

Y luego pasó correctamente al servidor HTTPS:

HTTPS en expreso

Configurar una aplicación HTTPS con Express

Usar HTTPS con Express requiere crear un servidor HTTPS con el módulo de Node.js. Tu expreso aplicación debe pasarse como parámetro al método:

constante https = requerir('https');
constante expresar = requerir('expresar');

// const httpsOptions = {cert, ca, clave};

constante aplicación = expresar();
constante httpsServer = https.createServer(httpsOptions, aplicación);

// El código de tu aplicación aquí

See also  Si mi cuenta está bloqueada, ¿cómo puedo recuperar el acceso? - Mi cuenta -

httpsServidor.escuchar(443, 'dominioejemplo.com');

El httpsOpciones El parámetro es un objeto idéntico al utilizado en esta sección de la guía: .

A continuación se muestra un ejemplo del código completo para crear una aplicación HTTPS Express:

En este punto, tendrá una aplicación Express a la que se puede acceder a través de HTTPS. Tenga en cuenta que la aplicación de ejemplo mencionada anteriormente escuchará solo las solicitudes HTTPS en el puerto especificado. Si también necesita que su aplicación escuche solicitudes HTTP, deberá configurar un servidor HTTP de manera similar usando el módulo.

Asegúrese de reiniciar su aplicación si ya se estaba ejecutando para aplicar los cambios. Para reiniciar la aplicación, simplemente puede ejecutar node .js en el directorio con su aplicación.

Esta herramienta se puede utilizar para verificar la instalación del certificado SSL:

Redirigir a HTTPS con Express

Para redirigir cualquier solicitud HTTP a HTTPS, también necesitará tener un servidor HTTP en ejecución que pueda escuchar las solicitudes HTTP. El servidor debe crearse utilizando el módulo y pasarse su aplicación Express como parámetro de la misma manera que se pasó la aplicación para el servidor HTTPS.

Para crear una redirección a HTTPS, puede configurar una función de middleware que verificará si una solicitud se realiza a través de HTTP y la redireccionará a HTTPS si es así. A continuación se muestra un ejemplo de dicho middleware que utiliza el método integrado de Express:

aplicación.use((req, res, siguiente) => {

si(req.protocolo === 'http') {

res.redireccionamiento (301, `https://${req.encabezados.anfitrión}${req.URL}`);

}

próximo();
});

A continuación se muestra un ejemplo de un código de aplicación Express completo que utiliza HTTPS y redirige todas las solicitudes HTTP a HTTPS:

En el código anterior, configuramos nuestra aplicación Express en la línea 16, luego creamos servidores HTTP y HTTPS en las líneas 17 y 18. Las líneas 20 a 25 crean el middleware que redirige las solicitudes HTTP a HTTPS. Por último, como ejemplo, configuramos un código de servidor en las líneas 30-35 e iniciamos los servidores HTTP y HTTPS llamando a sus escuchar() métodos en las líneas 37 y 38.

A continuación puede ver las capturas de pantalla que ilustran las solicitudes HTTP tanto para archivos estáticos como para URL personalizadas, que se redirigen correctamente.

Archivos estáticos:

URL personalizadas:

Tenga en cuenta: si Node.js se instaló como un entorno virtual en el alojamiento compartido de , no es posible instalar un certificado SSL en él; en su lugar, el certificado puede ser .

Loading Facebook Comments ...
Loading Disqus Comments ...