bg-tutorials

Come installare un certificato SSL su lighttpd

In questo tutorial imparerai come installare un certificato SSL su Lighttpd. La guida copre la configurazione attuale (certificato e chiave privata separati con il modulo mod_openssl), il vecchio metodo con PEM combinato per le versioni precedenti, e un rapido test della configurazione prima di riavviare.

Abbiamo anche registrato un video che ti guida attraverso l’intero processo. Se preferisci la versione testuale, continua a leggere qui sotto.

Genera un codice CSR su Lighttpd

Inizieremo con la generazione del CSR (Certificate Signing Request). Un CSR è un blocco di testo codificato che invii a un’Autorità di Certificazione per richiedere un certificato SSL. Hai due opzioni:

Apri il file CSR con un editor di testo e copia il suo contenuto, incluse le righe BEGIN CERTIFICATE REQUEST e END CERTIFICATE REQUEST, nell’apposito campo durante il processo di ordine SSL. Invia il CSR all’Autorità di Certificazione e attendi la convalida. Dopo che la CA ha emesso il tuo certificato SSL, prosegui con l’installazione descritta di seguito.

Installa un certificato SSL su Lighttpd

Passo 1: Prepara i file del certificato

Dopo la convalida, l’Autorità di Certificazione ti invia via email i file del certificato. Scarica l’archivio ed estrailo. Dovresti avere:

  • yourdomain.crt, il tuo certificato SSL principale.
  • yourdomain.ca-bundle, i certificati intermedi (il CA bundle).
  • yourdomain.key, la chiave privata generata insieme al CSR.

Lighttpd raccomanda che il file indicato da ssl.pemfile contenga l’intera catena di certificati: prima il tuo certificato, seguito dai certificati intermedi. Crea questo file combinato, quindi sposta sia questo che la chiave privata in una directory leggibile da Lighttpd (ad esempio /etc/lighttpd/ssl/):

cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem
sudo mkdir -p /etc/lighttpd/ssl
sudo cp yourdomain.fullchain.pem yourdomain.key /etc/lighttpd/ssl/

Limita i permessi della chiave privata in modo che solo root possa leggerla:

sudo chmod 600 /etc/lighttpd/ssl/yourdomain.key

Passo 2: Abilita mod_openssl

A partire dalla versione 1.4.56, il supporto TLS in Lighttpd risiede in un modulo caricabile chiamato mod_openssl (esistono anche altri backend come mod_mbedtls, mod_wolfssl, mod_gnutls e mod_nss). Caricalo nel file di configurazione principale prima del blocco socket SSL:

server.modules += ( "mod_openssl" )

Nota: su Lighttpd 1.4.55 e versioni precedenti, il TLS era compilato direttamente anziché caricato come modulo, quindi puoi saltare questa riga su quelle versioni. Verifica la tua versione con lighttpd -v.

Passo 3: Modifica lighttpd.conf

Apri il file di configurazione principale (il percorso è solitamente /etc/lighttpd/lighttpd.conf) con l’editor che preferisci:

sudo nano /etc/lighttpd/lighttpd.conf

Aggiungi un blocco socket per la porta 443. Nelle versioni attuali di Lighttpd (1.4.56+), mantieni la catena di certificati e la chiave privata in file separati: punta ssl.pemfile al file con la catena completa e ssl.privkey alla chiave. Questo è il formato in cui la maggior parte delle Autorità di Certificazione consegna i file, ed è la configurazione raccomandata da Lighttpd.

$SERVER["socket"] == ":443" {
    ssl.engine  = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
    ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"

    # Versione minima di TLS (ssl-conf-cmd richiede lighttpd 1.4.48+; TLS 1.2 è già il predefinito su 1.4.56+)
    ssl.openssl.ssl-conf-cmd = ( "MinProtocol" => "TLSv1.2" )
}
  • ssl.engine attiva il TLS per questo socket.
  • ssl.pemfile contiene il tuo certificato seguito dalla catena intermedia.
  • ssl.privkey contiene la chiave privata. È obbligatoria a partire dalla versione 1.4.53 ogni volta che la chiave non è inclusa nel pemfile.

Per reindirizzare l’HTTP semplice verso HTTPS, in modo che i visitatori raggiungano sempre la versione sicura, aggiungi un redirect per la porta 80 (questo richiede mod_redirect, che è caricato di default sulla maggior parte delle distribuzioni):

$SERVER["socket"] == ":80" {
    url.redirect = ( "^/(.*)" => "https://yourdomain.com/$1" )
}

Salva e chiudi il file.

Metodo legacy: PEM combinato e ssl.ca-file

Le versioni più vecchie di Lighttpd 1.4.x (precedenti alla 1.4.53) utilizzavano un unico PEM combinato che conteneva sia il certificato che la chiave privata concatenati insieme, con la catena intermedia fornita separatamente tramite ssl.ca-file. Se stai gestendo uno di questi sistemi più vecchi, crea il file combinato in questo modo:

cat yourdomain.crt yourdomain.key > /etc/lighttpd/ssl/yourdomain.pem

Quindi richiamalo nel blocco socket:

$SERVER["socket"] == ":443" {
    ssl.engine  = "enable"
    ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.pem"
    ssl.ca-file = "/etc/lighttpd/ssl/yourdomain.ca-bundle"
}

Nelle versioni attuali di Lighttpd, preferisci la forma separata ssl.pemfile e ssl.privkey descritta nel Passo 3 e mantieni la catena completa nel pemfile. La direttiva ssl.ca-file è stata rinominata ssl.verifyclient.ca-file nella versione 1.4.60, poiché il suo vero scopo è verificare i certificati client anziché servire la catena del server.

Passo 4: Testa la configurazione

Controlla sempre la sintassi prima di riavviare, perché un errore potrebbe impedire l’avvio del server. Esegui:

sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf

Dovresti vedere un messaggio che indica che la sintassi è corretta. Per un controllo più approfondito che carica e inizializza anche i moduli, usa sudo lighttpd -tt -f /etc/lighttpd/lighttpd.conf. Correggi eventuali errori segnalati prima di continuare.

Passo 5: Riavvia Lighttpd

Applica le modifiche. Su un sistema moderno con systemd, riavvia il servizio:

sudo systemctl restart lighttpd

Sui sistemi più vecchi che usano SysV init, utilizza invece lo script di init:

sudo /etc/init.d/lighttpd restart

Congratulazioni, il tuo certificato SSL è ora installato su Lighttpd. Per confermare il risultato e ottenere un rapporto di stato immediato, usa il nostro SSL Checker oppure esplora la nostra gamma completa di strumenti SSL. Per opzioni avanzate, consulta la documentazione ufficiale SSL di Lighttpd.

Domande Frequenti

Lighttpd utilizza un file PEM combinato o file separati per certificato e chiave?

Le versioni attuali di Lighttpd (1.4.56 e successive) raccomandano file separati: il certificato più la sua catena intermedia nel file indicato da ssl.pemfile, e la chiave privata in ssl.privkey. Il vecchio PEM combinato, che concatenava certificato e chiave in un unico ssl.pemfile, funziona ancora, ma la forma separata corrisponde al modo in cui la maggior parte delle Autorità di Certificazione consegna i file ed è la raccomandazione documentata.

Ho ancora bisogno di ssl.ca-file per la catena intermedia?

No. La raccomandazione attuale è includere i certificati intermedi direttamente nel file ssl.pemfile, subito dopo il tuo certificato. La direttiva ssl.ca-file era un modo storico per completare la catena quando il pemfile conteneva solo il certificato foglia, e nella versione 1.4.60 è stata rinominata ssl.verifyclient.ca-file perché il suo vero ruolo è la verifica dei certificati client.

Come controllo la configurazione prima di riavviare Lighttpd?

Esegui sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf per testare la sintassi, oppure sudo lighttpd -tt -f /etc/lighttpd/lighttpd.conf per un test più approfondito che carica anche i moduli. Correggi eventuali errori segnalati prima di riavviare, così un errore di battitura non impedirà l’avvio del server.

Perché il mio browser mostra una catena di certificati incompleta su Lighttpd?

Questo di solito significa che i certificati intermedi mancano dal tuo ssl.pemfile. Concatena il tuo certificato e il CA bundle in un unico file, con il certificato per primo, e fai puntare ssl.pemfile a quel file. Poi testa la configurazione e riavvia. Puoi verificare che la catena sia completa con il nostro SSL Checker.

Come verifico che il certificato SSL sia installato su Lighttpd?

Connettiti al tuo sito con OpenSSL e leggi il certificato che viene servito:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Se il certificato è installato, questo comando stampa l’emittente e le date di validità. Puoi anche aprire il tuo sito in un browser e controllare il lucchetto.

Risparmia il 10% sui certificati SSL ordinando oggi stesso da SSL Dragon!

Emissione rapida, crittografia avanzata, affidabilità del browser al 99,99%, assistenza dedicata e garanzia di rimborso entro 25 giorni. Codice coupon: SAVE10

Un'immagine dettagliata di un drago in volo
Scritto da

Scrittore di contenuti con esperienza, specializzato in certificati SSL. Trasforma intricati argomenti di cybersicurezza in contenuti chiari e coinvolgenti. Contribuisci a migliorare la sicurezza digitale attraverso narrazioni d'impatto.