Passa al contenuto principale

Come installare SSL su un VPS senza tempi di inattività

· 6 minuti di lettura
Customer Care Engineer

Pubblicato il 9 novembre 2026

Come installare SSL su un VPS senza tempi di inattività

Per installare SSL su un VPS in sicurezza, verifica innanzitutto che il dominio punti al VPS, che le porte 80 e 443 siano raggiungibili e che il server web stia già servendo il sito corretto. L'installazione di SSL è in genere rapida. I problemi più frequenti sono quasi sempre dovuti al DNS, alle regole del firewall o a una configurazione di host virtuale che punta a una destinazione imprevista.

Un certificato valido cifra il traffico tra un visitatore e la tua applicazione. Attiva anche il lucchetto nel browser, protegge le sessioni di accesso e i moduli di pagamento ed evita la pagina di avviso che allontana i clienti prima ancora che il tuo sito web abbia la possibilità di funzionare. Per un sito di e-commerce, una dashboard SaaS, il sito di un cliente di un'agenzia o un portale aziendale di posta elettronica, è una misura di base per la sicurezza in produzione.

Prima di installare SSL sul VPS, verifica questi requisiti di base​

Inizia controllando il record DNS. Il record A del tuo dominio deve risolversi nell'indirizzo IPv4 pubblico del VPS. Se usi IPv6, anche il record AAAA deve puntare allo stesso server. Un record AAAA dimenticato è un classico inconveniente: alcuni visitatori raggiungono il nuovo server, mentre altri ne raggiungono uno vecchio e ricevono un errore di certificato non corrispondente.

Poi assicurati che le porte TCP in ingresso 80 e 443 siano aperte in entrambi i punti rilevanti: il firewall del VPS e l'eventuale firewall a livello di provider. La comune convalida HTTP di Certbot richiede che la porta 80 sia disponibile, temporaneamente o in modo permanente. Il server web deve rispondere alle richieste per il dominio su quella porta.

Prima di apportare modifiche, individua anche il server web e il sistema operativo. I comandi seguenti presuppongono Ubuntu o Debian con Nginx o Apache. Gli stessi concetti relativi ai certificati si applicano ad AlmaLinux, Rocky Linux e ad altre distribuzioni, ma i nomi dei pacchetti e i comandi dei servizi possono variare.

Per prima cosa, crea una copia di backup della configurazione del server web. Uno snapshot VPS o una copia di backup di `/etc/nginx/` o `/etc/apache2/` ti fornisce un punto di ripristino pulito. Non è un'operazione spettacolare, è semplicemente buona pratica operativa. Il te del futuro te ne sarà grato alle 2 di notte.

Scegli il tipo di certificato più adatto​

Per la maggior parte dei siti web, un certificato gratuito di Let's Encrypt è la scelta più sensata. Fornisce la stessa crittografia del trasporto dei certificati commerciali ed è adatto a siti web standard, API e pannelli di controllo. Il certificato è valido per 90 giorni, quindi il rinnovo automatico è parte integrante dell'installazione, non un extra facoltativo.

Un certificato a pagamento può essere la scelta giusta se la tua organizzazione necessita di uno specifico livello di convalida, condizioni di garanzia, una determinata autorità di certificazione o un processo di acquisto gestito. I passaggi per l'installazione sono leggermente diversi: devi generare una richiesta di firma del certificato, ricevere i file emessi e installare manualmente la catena di certificati.

Se la tua applicazione viene eseguita dietro Cloudflare, un bilanciatore del carico o un altro proxy inverso, decidi dove deve terminare TLS. Potrebbe servirti un certificato sul proxy e un altro tra il proxy e il VPS. Non dare per scontato che un'icona a forma di nuvola arancione o un bilanciatore del carico eliminino la necessità di cifrare la connessione all'origine. Dipende dalla modalità di sicurezza, ma in genere la configurazione corretta in produzione prevede la crittografia end-to-end.

Installa un certificato Let's Encrypt con Certbot​

Su Ubuntu o Debian, aggiorna le informazioni sui pacchetti e installa Certbot con il plugin per il tuo server web. Per Nginx, usa:

```bash sudo apt update sudo apt install certbot python3-certbot-nginx ```

Per Apache, installa invece il plugin per Apache:

```bash sudo apt update sudo apt install certbot python3-certbot-apache ```

Prima di eseguire Certbot, verifica la configurazione del server web. Per Nginx:

```bash sudo nginx -t ```

Per Apache:

```bash sudo apachectl configtest ```

Correggi tutti gli errori segnalati prima di continuare. La richiesta del certificato può andare a buon fine mentre il ricaricamento non riesce: il certificato resta sul disco, ma non è attivo per i visitatori. I log raccontano la stessa storia anche stavolta: leggili prima di aggiungere un altro elemento alla configurazione.

Per un sito Nginx, richiedi il certificato e consenti a Certbot di aggiornare il blocco server:

```bash sudo certbot --nginx -d example.com -d www.example.com ```

Per Apache, esegui:

```bash sudo certbot --apache -d example.com -d www.example.com ```

Sostituisci `example.com` con il tuo dominio effettivo. Includi `www` solo se esiste nel DNS ed è configurato nel server web. Durante la procedura, inserisci un indirizzo email funzionante, accetta i termini e scegli l'opzione di reindirizzamento se vuoi inviare tutto il traffico HTTP a HTTPS. Nella maggior parte dei casi, è consigliabile impostare il reindirizzamento. In questo modo i visitatori non atterrano su una versione non cifrata della stessa pagina.

Certbot otterrà il certificato, inserirà i percorsi nella configurazione del server e ricaricherà il servizio interessato. Le richieste HTTP già in corso potrebbero concludersi normalmente e un normale ricaricamento di solito non causa tempi di inattività significativi. Se la tua applicazione usa una configurazione proxy complessa o regole di riscrittura personalizzate, esegui comunque l'operazione in un momento di minor attività.

Installa manualmente un certificato SSL commerciale​

Se hai acquistato un certificato, crea una chiave privata e una richiesta di firma del certificato sul VPS. Conserva la chiave privata sul server e non inviarla mai via email né inserirla in un ticket.

```bash sudo openssl req -new -newkey rsa:2048 -nodes \ -keyout /etc/ssl/private/example.com.key \ -out /etc/ssl/certs/example.com.csr ```

Il fornitore del certificato emetterà un certificato server e uno o più certificati intermedi. Se richiesto dal fornitore, combina i certificati intermedi per creare la catena completa. Con Nginx, il blocco server deve generalmente includere le direttive seguenti:

```nginx listen 443 ssl; server_name example.com www.example.com; ssl_certificate /etc/ssl/certs/example.com.fullchain.pem; ssl_certificate_key /etc/ssl/private/example.com.key; ```

Apache usa le direttive equivalenti `SSLCertificateFile` e `SSLCertificateKeyFile` all'interno dell'host virtuale HTTPS. La struttura esatta dei file può variare in base alla distribuzione e al pannello di controllo: non copiare i percorsi alla cieca. Verifica anche proprietà e autorizzazioni. In genere, la chiave privata dovrebbe essere leggibile solo da root e, se necessario, dall'account del servizio.

Verifica la configurazione, poi, se possibile, ricarica il servizio invece di riavviarlo:

```bash sudo nginx -t && sudo systemctl reload nginx ```

Il ricaricamento mantiene attivi i processi worker mentre applica la nuova configurazione. Quando disponibile, è l'opzione più tranquilla.

Verifica il certificato e il comportamento dei reindirizzamenti​

Apri il tuo dominio in una finestra di navigazione privata usando `https://`. Controlla che il dominio visualizzato corrisponda al certificato e che il browser segnali una connessione valida. Poi prova la versione HTTP e verifica che venga reindirizzata a HTTPS.

Dal VPS o da un altro terminale, puoi esaminare le intestazioni della risposta:

```bash curl -I http://example.com curl -I https://example.com ```

La richiesta HTTP dovrebbe restituire un reindirizzamento 301 o 308 all'indirizzo HTTPS. La richiesta HTTPS dovrebbe restituire il codice di stato previsto, spesso 200, 301 o 302, a seconda dell'applicazione.

Esamina anche direttamente il certificato:

```bash sudo certbot certificates ```

Per un certificato commerciale, usa OpenSSL per controllare la scadenza e i dettagli dell'emittente:

```bash openssl x509 -in /etc/ssl/certs/example.com.fullchain.pem -noout -dates -issuer -subject ```

Non fermarti al lucchetto. I contenuti misti possono comunque creare problemi se script, immagini, font o chiamate API vengono caricati tramite URL `http://`. Gli strumenti di sviluppo del browser mostreranno questi avvisi. Aggiorna gli URL hardcoded, le variabili d'ambiente dell'applicazione e le eventuali impostazioni della CDN o delle risorse statiche.

Monitora il rinnovo​

I certificati Let's Encrypt devono essere rinnovati prima che scadano dopo 90 giorni. Le versioni moderne di Certbot installano in genere automaticamente un timer systemd, ma verificalo invece di fidarti del silenzio di un server.

```bash sudo systemctl list-timers | grep certbot sudo certbot renew --dry-run ```

La prova a secco è il test più significativo. Conferma che il VPS possa completare le future convalide e ricaricare il server web dopo il rinnovo. Se non riesce, risolvi il problema mentre il certificato esistente è ancora valido.

Per i certificati commerciali, annota la data di scadenza con largo anticipo. Il rinnovo è spesso manuale, a meno che il fornitore del certificato o la piattaforma di gestione non supportino l'automazione. Se possibile, aggiungi il monitoraggio della scadenza del certificato. Anche un certificato valido che scade senza che nessuno se ne accorga causa un'interruzione del servizio, solo con un errore del browser dall'aria molto ufficiale.

Su kodu.cloud, il supporto operativo gestito e il monitoraggio possono ridurre questo tipo di rischio ricorrente, soprattutto quando un VPS ospita diversi domini di clienti o servizi di produzione. L'obiettivo è semplice: i certificati dovrebbero rinnovarsi senza problemi e il tuo team non dovrebbe ricordarsene ogni trimestre.

Problemi comuni dopo l'installazione di SSL​

Un certificato non corrispondente significa in genere che la richiesta raggiunge il VPS sbagliato, che l'host virtuale predefinito è quello sbagliato oppure che nella richiesta del certificato è stato omesso un nome host come `www`. Controlla prima il DNS, poi verifica i nomi server configurati nel server web.

Un errore di convalida indica normalmente un problema con la porta 80, la propagazione DNS o la configurazione del proxy. Se il dominio usa una CDN, assicurati che i record DNS e la modalità proxy consentano il metodo di convalida scelto. La convalida tramite challenge DNS è spesso preferibile per i certificati wildcard, ma richiede l'accesso all'API DNS o una procedura manuale per i record DNS.

Se, dopo aver forzato HTTPS, il sito web entra in un ciclo di reindirizzamenti, cerca reindirizzamenti in conflitto nell'applicazione, in Nginx o Apache e in eventuali proxy inversi. Le applicazioni dietro un proxy potrebbero richiedere un'impostazione affidabile per le intestazioni inoltrate, in modo da riconoscere che la richiesta originale usa HTTPS. Quando succede, la situazione DNS non è delle più belle, ma torna sotto controllo non appena si assegna chiaramente a un unico componente la gestione dei reindirizzamenti.

Inserisci certificato, configurazione del server web e controlli del rinnovo nella stessa routine operativa. Un certificato SSL installato correttamente dovrebbe diventare un'infrastruttura noiosa: sempre presente, verificato e senza richiedere attenzioni.

Andres Saar, ingegnere del servizio clienti