In questa guida imparerai come installare un certificato SSL su CentOS e sui suoi successori della famiglia RHEL (AlmaLinux, Rocky Linux e CentOS Stream) utilizzando il server web Apache httpd.
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
Quando richiedi un certificato SSL, per prima cosa generi un CSR (Certificate Signing Request) e lo invii alla Certificate Authority. Il CSR è un blocco di testo che contiene i tuoi dati di contatto e di dominio, ed è abbinato a una chiave privata creata contemporaneamente. Hai due opzioni:
- Usa il nostro Generatore di CSR per creare il CSR automaticamente.
- Segui il nostro tutorial passo-passo su come creare un CSR su CentOS.
Invia il CSR alla Certificate Authority durante il checkout. Una volta che la CA lo convalida ed emette il tuo certificato, prosegui con l’installazione qui sotto.
Installare un certificato SSL su CentOS / RHEL (Apache)
Nota sulle versioni: CentOS Linux 8 ha raggiunto il fine vita (End of Life) il 31 dicembre 2021, e CentOS Linux 7 ha raggiunto l’EOL il 30 giugno 2024. Per la produzione, utilizza invece una distribuzione supportata della famiglia RHEL: RHEL 8/9/10, AlmaLinux, Rocky Linux o CentOS Stream. Condividono tutte la stessa struttura di Apache httpd, quindi i passaggi seguenti si applicano a tutte quante.
Prima di iniziare
Dopo la convalida, la tua Certificate Authority ti invia via email i file del certificato. Assicurati di avere pronti questi tre file separati:
- 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.
Importante: non includere mai la chiave privata nella catena del certificato. La chiave deve restare nel suo file separato, leggibile solo da root.
Passaggio 1: installa il supporto TLS (mod_ssl)
Installa mod_ssl, che aggiunge il supporto TLS ad Apache e crea una configurazione TLS predefinita in /etc/httpd/conf.d/ssl.conf:
sudo dnf install -y mod_ssl
Sui sistemi più vecchi che utilizzano ancora il gestore pacchetti yum, esegui invece sudo yum install -y mod_ssl.
Passaggio 2: posiziona i file SSL
Copia la chiave privata in /etc/pki/tls/private/ e blocca i permessi in modo che solo root possa leggerla:
sudo cp yourdomain.key /etc/pki/tls/private/
sudo chown root:root /etc/pki/tls/private/yourdomain.key
sudo chmod 600 /etc/pki/tls/private/yourdomain.key
Successivamente, crea il file della catena completa concatenando il tuo certificato e il CA bundle, e posizionalo in /etc/pki/tls/certs/:
cat yourdomain.crt yourdomain.ca-bundle
| sudo tee /etc/pki/tls/certs/yourdomain-fullchain.crt > /dev/null
Il file della catena completa deve contenere solo il certificato pubblico e la catena intermedia, mai la chiave privata.
Passaggio 3: configura il virtual host TLS di Apache
Puoi modificare il file predefinito /etc/httpd/conf.d/ssl.conf creato da mod_ssl, oppure (più pulito) creare un file dedicato per il tuo sito, ad esempio /etc/httpd/conf.d/yourdomain.conf. Aprilo con un editor di testo:
sudo nano /etc/httpd/conf.d/yourdomain.conf
Aggiungi un virtual host sulla porta 80 che reindirizza tutto il traffico a HTTPS, seguito dal virtual host sulla porta sicura 443 che contiene le direttive SSL:
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/yourdomain.com
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/yourdomain-fullchain.crt
SSLCertificateKeyFile /etc/pki/tls/private/yourdomain.key
</VirtualHost>
- SSLCertificateFile, il tuo file con la catena completa (certificato + intermedi). Su Apache 2.4.8 e versioni successive, questa singola direttiva sostituisce la deprecata SSLCertificateChainFile.
- SSLCertificateKeyFile, la chiave privata creata insieme al CSR.
Nota sull’host predefinito: il file /etc/httpd/conf.d/ssl.conf di mod_ssl include un proprio blocco <VirtualHost _default_:443> con un certificato autofirmato. Quando aggiungi un host per sito su *:443 come sopra, le richieste che corrispondono al tuo ServerName utilizzano il tuo certificato, ma le richieste HTTPS non corrispondenti (ad esempio, quando si raggiunge il server tramite il suo indirizzo IP) ricadono comunque su quell’host predefinito autofirmato. Se non desideri questo comportamento di fallback, commenta il blocco <VirtualHost _default_:443> in ssl.conf oppure fallo puntare al tuo certificato.
Nota sull’irrobustimento TLS: Apache su RHEL 8 e versioni successive segue la politica crittografica a livello di sistema, che disabilita già i protocolli obsoleti. Per impostare la politica sull’intero server, esegui sudo update-crypto-policies --set DEFAULT (oppure FUTURE per impostazioni più rigorose). Se preferisci invece fissare i protocolli per singolo virtual host, aggiungi SSLProtocol -all +TLSv1.2 +TLSv1.3 all’interno del blocco della porta 443.
Passaggio 4: verifica la tua configurazione Apache
Controlla sempre la sintassi prima di ricaricare, perché anche un solo errore di battitura può mettere il sito offline:
sudo apachectl configtest
Dovresti vedere Syntax OK. (Il comando sudo httpd -t fa la stessa cosa.) Correggi eventuali errori segnalati prima di procedere.
Passaggio 5: riavvia Apache
Applica le modifiche ricaricando il servizio httpd (un ricaricamento attiva la nuova configurazione senza interrompere le connessioni attive):
sudo systemctl reload httpd
Se httpd non era ancora in esecuzione, avvialo con sudo systemctl enable --now httpd. Il tuo sito web dovrebbe ora essere attivo su HTTPS. Per verificare il risultato e ottenere un report immediato sullo stato, usa il nostro SSL Checker.
Note per versioni precedenti di CentOS (7 e antecedenti)
CentOS Linux 7, 6 e 8 hanno tutti superato il fine vita e non ricevono più aggiornamenti di sicurezza, quindi migra verso una distribuzione supportata della famiglia RHEL quando possibile. Se devi lavorare su un server obsoleto, il processo è lo stesso descritto sopra, con due differenze:
- Gestore pacchetti: CentOS 7 e 6 utilizzano yum invece di dnf. Verifica se mod_ssl è già installato con
rpm -qa | grep mod_ssl, e in caso contrario, installalo consudo yum install -y mod_ssl. - Apache precedente alla versione 2.4.8: solo le build molto vecchie precedono la 2.4.8. In questo caso, mantieni il certificato e la catena in file separati e aggiungi una terza direttiva, SSLCertificateChainFile, che punti al CA bundle (non al tuo certificato):
SSLCertificateFile /etc/pki/tls/certs/yourdomain.crt
SSLCertificateKeyFile /etc/pki/tls/private/yourdomain.key
SSLCertificateChainFile /etc/pki/tls/certs/yourdomain.ca-bundle
Su Apache 2.4.8 e versioni successive (che coprono ogni versione attualmente supportata), usa invece la più semplice direttiva unica con catena completa SSLCertificateFile mostrata nel Passaggio 3.
Dove acquistare un certificato SSL per CentOS?
Il posto migliore per acquistare un certificato SSL per il tuo server CentOS è un rivenditore SSL affidabile come SSL Dragon. I nostri prezzi sono tra i più bassi sul mercato, e offriamo sconti regolari e ottime offerte su tutta la nostra gamma di prodotti SSL, supportati da un’assistenza clienti eccellente. Tutti i nostri certificati sono compatibili con CentOS e i suoi successori della famiglia RHEL.
SSL Dragon si prende cura della sicurezza dei tuoi dati sensibili, così il tuo sito web o la tua attività possono prosperare online.
Domande frequenti
Connettiti al tuo sito con OpenSSL e leggi il certificato che restituisce:echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Se un certificato è installato, questo comando stampa l’emittente e le date di validità. Per esaminare invece un file di certificato presente sul disco, esegui openssl x509 -text -noout -in certificate.crt. Puoi anche elencare i virtual host attivi di Apache con sudo apachectl -S, oppure aprire il tuo sito in un browser e controllare il lucchetto.
Per convenzione, i certificati si trovano in /etc/pki/tls/certs/ e le chiavi private in /etc/pki/tls/private/. Queste sono le posizioni predefinite della famiglia RHEL; puoi usare altre posizioni purché il tuo virtual host punti ad esse.
Il modulo TLS installa le sue impostazioni predefinite in /etc/httpd/conf.d/ssl.conf, e la configurazione principale di Apache è /etc/httpd/conf/httpd.conf. Puoi aggiungere i tuoi virtual host in ssl.conf, ma è più pulito creare un file per singolo sito come /etc/httpd/conf.d/yourdomain.conf. Qualsiasi file .conf in /etc/httpd/conf.d/ viene caricato automaticamente. I log di Apache si trovano in /var/log/httpd/.
Su Apache 2.4.8 e versioni successive (ogni versione attualmente supportata della famiglia RHEL), sì: concatena il tuo certificato e il CA bundle in un unico file con la catena completa e fai puntare SSLCertificateFile ad esso. La direttiva separata SSLCertificateChainFile è deprecata ed è necessaria solo su build di Apache antecedenti alla 2.4.8.
OpenSSL è preinstallato su CentOS e su ogni altra principale distribuzione Linux, quindi solitamente non è necessario installarlo. Se manca, aggiungilo con sudo dnf install -y openssl (oppure sudo yum install -y openssl su CentOS 7 e versioni precedenti). Scopri di più su OpenSSL e le sue righe di comando.
In sintesi
Installare un certificato SSL su CentOS o RHEL con Apache si riduce a installare mod_ssl, posizionare la chiave privata e il certificato con catena completa in /etc/pki/tls/, configurare il blocco <VirtualHost *:443> in /etc/httpd/conf.d/, verificare con sudo apachectl configtest, e ricaricare con sudo systemctl reload httpd. Hai bisogno prima di un certificato? Sfoglia i nostri certificati SSL.
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

