Questo tutorial mostra come generare una CSR su lighttpd utilizzando la riga di comando OpenSSL sullo stesso server su cui è in esecuzione il web server lighttpd. Creerai due file con un solo comando: una nuova chiave privata e la CSR (Certificate Signing Request) corrispondente che invierai alla tua Certificate Authority.
I passaggi seguenti funzionano su ogni distribuzione Linux moderna che include lighttpd (Debian, Ubuntu, RHEL, AlmaLinux, Rocky Linux, Fedora, openSUSE, Alpine), poiché ognuna include OpenSSL 1.1.1 o OpenSSL 3.x. Entrambe le versioni firmano la richiesta con SHA-256 per impostazione predefinita, quindi non è necessario aggiungere un flag per il digest. Lo stesso comando funziona anche su FreeBSD e su macOS con lighttpd.
Passo 1: Connettiti al tuo server lighttpd
Apri Terminale su macOS o Linux, oppure PowerShell o Windows Terminal su Windows, e connettiti al server tramite SSH. Sostituisci il nome utente e l’host con i tuoi:
ssh your-user@your-lighttpd-server
Genera la CSR sullo stesso server che ospiterà il certificato. La chiave privata viene creata insieme alla CSR e deve rimanere su quel server, quindi eseguire il comando sul tuo laptop e poi copiare la chiave altrove vanifica lo scopo. Potresti anche voler eseguire il lavoro in una directory dedicata che puoi ritrovare facilmente in seguito, ad esempio:
sudo mkdir -p /etc/lighttpd/ssl
cd /etc/lighttpd/ssl
Passo 2: Genera la chiave privata e la CSR
Se hai già generato la tua CSR con un altro strumento, passa a installare il certificato su lighttpd.
Esegui il seguente comando OpenSSL. Crea una chiave RSA a 2048 bit e una CSR in un solo passaggio, con il subject e i Subject Alternative Names (SAN) forniti inline in modo che OpenSSL non si fermi a fare domande:
openssl req -new -newkey rsa:2048 -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
Cosa fa ogni parte:
- -newkey rsa:2048 genera una nuova chiave RSA a 2048 bit. 2048 bit è il minimo attuale per i certificati pubblici; puoi usare rsa:4096 per una chiave più grande, oppure passare a ECDSA (vedi sotto).
- -nodes lascia la chiave privata non cifrata in modo che lighttpd possa leggerla all’avvio senza richiedere una passphrase.
- -keyout e -out assegnano il nome ai file della chiave privata e della CSR.
- -subj fornisce il subject del certificato. Inserisci qui il nome reale della tua azienda, lo stato e la città, non i segnaposto. CN (Common Name) è il tuo dominio principale.
- -addext “subjectAltName=…” elenca ogni hostname che il certificato deve coprire. Le CA pubbliche validano rispetto all’elenco SAN, quindi includi anche qui il Common Name.
Sostituisci yourdomain.com con il tuo dominio effettivo ovunque. Per coprire hostname aggiuntivi, aggiungili all’elenco SAN separati da virgole, ad esempio DNS:api.yourdomain.com. Per un certificato wildcard, includi sia il wildcard che il dominio semplice: DNS:*.yourdomain.com,DNS:yourdomain.com. Usa solo caratteri alfanumerici nei campi del subject, e usa il codice paese ufficiale a due lettere per il campo C.
Se preferisci una chiave ECDSA (più piccola e veloce, con P-256 ampiamente supportato), genera la chiave e la CSR in questo modo:
openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -pkeyopt ec_param_enc:named_curve -nodes
-keyout yourdomain.key
-out yourdomain.csr
-subj "/C=US/ST=YourState/L=YourCity/O=YourCompany/CN=yourdomain.com"
-addext "subjectAltName=DNS:yourdomain.com,DNS:www.yourdomain.com"
lighttpd supporta sia certificati RSA che ECDSA tramite mod_openssl, e puoi servire entrambi sullo stesso socket elencando due coppie di direttive ssl.pemfile e ssl.privkey.
Se preferisci rispondere alle richieste un campo alla volta, esegui openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr senza -subj e senza -addext. OpenSSL chiederà ogni campo in sequenza. Quando lo fa:
- Country Name (C): il codice ISO a due lettere del tuo paese, ad esempio US o GB. Per i certificati Business Validation o Extended Validation, questo deve essere il paese ufficiale di registrazione della tua organizzazione.
- State or Province Name (ST): il nome completo, ad esempio Tennessee. Non abbreviare.
- Locality Name (L): la città, ad esempio Nashville.
- Organization Name (O): il nome ufficiale registrato della tua azienda, ad esempio Your Company LLC. Per i certificati Domain Validation puoi inserire NA.
- Organizational Unit Name (OU): questo campo è deprecato e ignorato dalle CA pubbliche. Lascialo vuoto premendo Invio.
- Common Name (CN): il Fully Qualified Domain Name per cui è destinato il certificato, ad esempio www.yourdomain.com. Per un wildcard, usa *.yourdomain.com.
- Email Address: opzionale e non utilizzato dalle CA pubbliche. Puoi lasciarlo vuoto.
- A challenge password e An optional company name: entrambi sono attributi obsoleti che le CA pubbliche ignorano. Lasciali vuoti.
Senza il flag -addext la CSR risultante non avrà voci SAN. Le CA pubbliche validano rispetto all’elenco SAN e rifiuteranno (o sovrascriveranno silenziosamente) una richiesta che ne è priva, quindi il percorso consigliato è il comando inline -subj più -addext riportato sopra.
Passo 3: Individua i tuoi file
Elenca la directory corrente per confermare che entrambi i file siano stati creati:
ls
Dovresti vedere due nuovi file:
- yourdomain.key: la tua chiave privata. Mantienila sul server, eseguine un backup sicuro e non inviarla mai a nessuno, inclusa la Certificate Authority. Chiunque possieda la chiave può impersonare il tuo sito.
- yourdomain.csr: la tua Certificate Signing Request. Questo è il file che invii al provider SSL.
Limita l’accesso alla chiave privata in modo che solo il proprietario del file possa leggerla:
chmod 600 yourdomain.key
Passo 4: Verifica la CSR (opzionale ma consigliato)
Prima di inviarla, controlla che la CSR contenga il subject e i SAN corretti e che la sua firma sia valida. Questo decodifica la richiesta localmente con OpenSSL:
openssl req -noout -text -verify -in yourdomain.csr
Verifica che la riga Subject mostri i tuoi dati, che X509v3 Subject Alternative Name elenchi ogni hostname previsto, e che il controllo della firma restituisca verify OK. L’algoritmo di firma dovrebbe indicare sha256WithRSAEncryption (o ecdsa-with-SHA256 per una chiave ECDSA). Se preferisci non usare la riga di comando, incolla la CSR nel nostro Decodificatore CSR online per leggere gli stessi campi in un browser.
Passo 5: Invia la tua CSR
Per copiare la CSR per il tuo ordine, stampane il contenuto:
cat yourdomain.csr
Vedrai un blocco di testo simile a questo:
-----BEGIN CERTIFICATE REQUEST-----
MIICyzCCAbMCAQAwTDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQsw...
...(molte altre righe di caratteri base64)...
-----END CERTIFICATE REQUEST-----
Copia l’intero blocco, incluse le righe —–BEGIN CERTIFICATE REQUEST—– e —–END CERTIFICATE REQUEST—– (ogni marcatore ha cinque trattini su entrambi i lati). Quell’intero blocco è la tua CSR. Incollala nel modulo d’ordine durante l’acquisto, e mantieni la chiave privata corrispondente al suo posto sul server.
Se preferisci non usare la riga di comando, puoi anche creare la richiesta con il nostro Generatore CSR online. Nota che genera la chiave privata nel tuo browser, quindi salva tu stesso quella chiave e spostala sul server.
Dopo che la tua CA convalida la richiesta, riceverai il tuo certificato. In base al livello di validazione, questo richiede pochi minuti per la Domain Validation, oppure fino a diversi giorni lavorativi per la Business Validation e l’Extended Validation.
Passo 6: Installa il certificato su lighttpd
Quando il certificato arriva, posiziona il certificato rilasciato e la sua catena intermedia sul server insieme alla chiave privata, poi indica a lighttpd dove trovarli nel blocco socket TLS. Nelle versioni attuali di lighttpd, il supporto TLS si trova in mod_openssl, e il formato consigliato (da quando lighttpd 1.4.53 ha introdotto ssl.privkey) mantiene il certificato più la catena in un file e la chiave privata in un file separato:
server.modules += ( "mod_openssl" )
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/yourdomain.fullchain.pem"
ssl.privkey = "/etc/lighttpd/ssl/yourdomain.key"
}
Il file ssl.pemfile dovrebbe contenere il tuo certificato seguito dai certificati intermedi (costruiscilo con cat yourdomain.crt yourdomain.ca-bundle > yourdomain.fullchain.pem). Il vecchio formato a file singolo che concatenava il certificato e la chiave privata in un unico ssl.pemfile funziona ancora sulle build più vecchie, ma la forma a file separati corrisponde al modo in cui le Certificate Authority forniscono i file ed è la raccomandazione documentata. Testa la configurazione con sudo lighttpd -t -f /etc/lighttpd/lighttpd.conf e riavvia lighttpd per applicare la modifica. Per il flusso di lavoro completo, consulta la nostra guida su come installare un certificato SSL su lighttpd.
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


