Node.js: gestire i certificati SSL di Let's Encrypt per nginx

Node.js: gestire i certificati SSL di Let's Encrypt per nginx

Una volta ottenuto un certificato SSL con Let's Encrypt per nginx possiamo utilizzarlo in Node.js.

Otteniamo il certificato in questo modo:


sudo certbot --nginx -d esempio.com

Copiamo quindi i file ottenuti dopo essere diventati utenti root:


cp /etc/letsencrypt/live/esempio.com/fullchain.pem /home/esempio/app/fullchain.pem 
chown esempio:esempio /home/esempio/app/fullchain.pem  
cp /etc/letsencrypt/live/esempio.com/privkey.pem /home/esempio/app/privkey.pem 
chown esempio:esempio /home/esempio/app/privkey.pem 

A questo punto possiamo usare il certificato in Node:


'use strict';

const express = require('express');
const fs = require('fs');
const https = require('https');
const port = process.env.PORT || 8080;
const  app = express();

const sslOptions = {
  key: fs.readFileSync('privkey.pem'),
  cert: fs.readFileSync('fullchain.pem')
};

https.createServer(sslOptions, app).listen(port);

Infine, gestiamo il rinnovo del certificato creando un cronjob per l'utente root ( crontab -e ) con i seguenti comandi al suo interno:


+ + + + + /usr/bin/certbot renew --quiet                                                                                                                                                            
+ + + + + cat /etc/letsencrypt/live/esempio.com/fullchain.pem > /home/esempio/app/fullchain.pem && chown esempio:esempio /home/esempio/app/fullchain.pem
+ + + + + cat /etc/letsencrypt/live/esempio.com/privkey.pem > /home/esempio/app/privkey.pem && chown esempio:esempio /home/esempio/app/privkey.pem  

Sostituite il carattere + con i valori appropriati e quindi riavviate il demone cron.

Torna su