Come Creare Certificati SSL da Terminale con OpenSSL e Let’s Encrypt
La sicurezza delle comunicazioni web è fondamentale. HTTPS non è più un’opzione: è un requisito per qualsiasi sito moderno.
In questo articolo vediamo come creare certificati SSL direttamente da terminale, usando OpenSSL per i test locali e Let’s Encrypt per i siti in produzione.
1. Creare un certificato self-signed con OpenSSL
Un certificato autofirmato (self-signed) è utile per ambienti di sviluppo o test. Non sarà riconosciuto dai browser come “sicuro”, ma permette comunque di attivare HTTPS.
# Genera la chiave privata (RSA 2048 bit)
openssl genrsa -out server.key 2048
# Genera il certificato autofirmato valido 365 giorni
openssl req -new -x509 -key server.key -out server.crt -days 365
Durante la creazione ti verranno chieste alcune informazioni, come il Common Name (CN), che deve corrispondere al dominio (es. www.carmelobaglieri.it).
2. Generare una richiesta di certificato (CSR)
Se vuoi ottenere un certificato ufficiale da una Certification Authority (CA), devi creare una Certificate Signing Request (CSR).
# Genera la chiave privata
openssl genrsa -out server.key 2048
# Genera la CSR
openssl req -new -key server.key -out server.csr
Il file server.csr va poi inviato alla CA, che rilascerà un certificato valido e riconosciuto dai browser
3. Generare certificato e chiave in un unico file PEM
In alcuni casi (es. configurazioni con Node.js o Nginx) può essere comodo avere certificato e chiave nello stesso file:
openssl req -x509 -nodes -newkey rsa:2048 -keyout server.pem -out server.pem -days 365
4. Certificati SSL gratuiti con Let’s Encrypt
Per un sito in produzione, la soluzione migliore è usare Let’s Encrypt, che offre certificati gratuiti e rinnovabili automaticamente.
Con Certbot, l’installazione è semplice:
Installazione su Ubuntu/Debian:
sudo apt update
sudo apt install certbot python3-certbot-nginx
Configurazione con Nginx:
sudo certbot --nginx -d carmelobaglieri.it -d www.carmelobaglieri.it
Configurazione con Apache:
sudo certbot --apache -d carmelobaglieri.it -d www.carmelobaglieri.it
Certbot si occuperà di:
- generare le chiavi (privkey.pem, cert.pem)
- configurare automaticamente il server
- rinnovare i certificati ogni 90 giorni
Conclusioni
- Per sviluppo e test: puoi usare certificati self-signed con OpenSSL.
- Per produzione: Let’s Encrypt è la scelta più semplice e sicura.
- Con Certbot il rinnovo è automatico e non dovrai più preoccuparti della scadenza dei certificati.