Introducción
- Queremos levantar un servidor HTTPS con Node.
- Queremos usar certificados firmados por Let’s Encrypt (no autofirmados)
- Usaremos el cliente acme.sh (en modo standalone) por su sencillez
- Mejor ser root (aunque se supone que no es necesario serlo)
Pasos
- Instalar el cliente acme
https://github.com/Neilpang/acme.sh -
Emitir un certificado para el dominio (en este ejemplo estaríamos solicitando un certificado para el dominio example.com)
acme.sh --issue --standalone -d example.com
- Generar certificados pem
acme.sh --install-cert -d example.com \
--cert-file /ruta/a/clave/publica/cert.pem \
--key-file /ruta/a/clave/privada/key.pem \
--fullchain-file /ruta/a/toda/la/cadena/fullchain.pem
-
Copiar los ficheros cert.pem y key.pem al destino
-
Código mínimo javascript (cambiar la ruta de key.pem y cert.pem a la indicada en el punto anterior)
var express = require('express');
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
var app = express();
https.createServer(options, app).listen(8443);
app.get("/", (req, res) => {
});
Posiles problemas
-
Si nuestro servidor está detrás de un router, es posible que sea necesario abrir el puerto 80 para conseguir el certificado.
-
Hay que revisar la renovación de los certificados
-
En el mismo equipo no debe haber otro servidor HTTP ya que puede interferir en el modo standalone de acme.sh
Referencias
https://github.com/Neilpang/acme.sh
Deja una respuesta