Ricerca nel sito web

Come creare un certificato SSL autofirmato locale su CentOS 8


SSL (Secure Socket Layer) e la sua versione migliorata, TLS (Transport Socket Layer), sono protocolli di sicurezza utilizzati per proteggere il traffico Web inviato dal browser Web di un client a un server Web.

Un certificato SSL è un certificato digitale che crea un canale sicuro tra il browser di un client e un server web. In tal modo, i dati sensibili e riservati come i dati delle carte di credito, le credenziali di accesso e altre informazioni altamente private vengono crittografati, impedendo agli hacker di intercettare e rubare le tue informazioni.

Cos'è un certificato SSL autofirmato?

Un certificato SSL autofirmato, a differenza di altri certificati SSL firmati e attendibili da un'Autorità di certificazione (CA), è un certificato firmato da un individuo che lo possiede.

Crearne uno è totalmente gratuito ed è un modo economico per crittografare il tuo server web ospitato localmente. Tuttavia, l’utilizzo di un certificato SSL autofirmato è altamente sconsigliato negli ambienti di produzione per i seguenti motivi:

  1. Poiché non è firmato da un'autorità di certificazione, un certificato SSL autofirmato genera avvisi sui browser Web avvisando gli utenti di potenziali rischi qualora decidessero di procedere. Questi avvisi sono indesiderati e dissuaderanno gli utenti dal visitare il tuo sito web, portando potenzialmente a un calo del traffico web. Come soluzione alternativa a questi avvisi, le organizzazioni in genere incoraggiano i propri dipendenti a ignorarli semplicemente e procedere avanti. Ciò potrebbe generare un'abitudine pericolosa tra gli utenti che potrebbero decidere di continuare a ignorare questi avvisi su altri siti online, cadendo potenzialmente vittime di siti di phishing.
  2. I certificati autofirmati hanno un livello di sicurezza basso poiché implementano tecnologie di crittografia e hash di basso livello. Pertanto il livello di sicurezza potrebbe non essere alla pari con le politiche di sicurezza standard.
  3. Inoltre, non è disponibile alcun supporto per le funzioni PKI (Public Key Infrastructure).

Detto questo, l'uso di un certificato SSL autofirmato non è una cattiva idea per testare servizi e applicazioni su un computer locale che richiede la crittografia TLS/SSL.

In questa guida imparerai come installare un certificato SSL locale autofirmato sul server web Apache localhost su un sistema server CentOS 8.

Prerequisiti:

Prima di iniziare, assicurati di possedere i seguenti requisiti di base:

  1. Un'istanza del server CentOS 8.
  2. Server web Apache installato sul server
  3. Un nome host già configurato e definito nel file /etc/hosts. Per questa guida utilizzeremo tecmint.local un nome host per il nostro server.

Passaggio 1: installazione di Mod_SSL su CentOS

1. Per iniziare, devi verificare che il server web Apache sia installato e funzionante.

sudo systemctl status httpd

Ecco l'output previsto.

Se il server web non è in esecuzione, è possibile avviarlo e abilitarlo all'avvio utilizzando il comando.

sudo systemctl start httpd
sudo systemctl enable httpd

Successivamente potrai verificare se Apache è attivo e funzionante.

2. Per abilitare l'installazione e la configurazione del certificato SSL autofirmato locale, è richiesto il pacchetto mod_ssl.

sudo dnf install mod_ssl

Una volta installato, puoi verificarne l'installazione eseguendo.

sudo rpm -q mod_ssl

Inoltre, assicurati che il pacchetto OpenSSL sia installato (OpenSSL viene installato per impostazione predefinita in CentOS 8).

sudo rpm -q openssl 

Passaggio 2: crea un certificato SSL autofirmato locale per Apache

3. Con il server web Apache e tutti i prerequisiti sotto controllo, è necessario creare una directory all'interno della quale verranno archiviate le chiavi crittografiche.

In questo esempio, abbiamo creato una directory in /etc/ssl/private.

sudo mkdir -p /etc/ssl/private

Ora crea la chiave e il file del certificato SSL locale utilizzando il comando:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

Diamo un'occhiata a cosa rappresentano effettivamente alcune delle opzioni nel comando:

  • req -x509: indica che stiamo utilizzando la richiesta di firma del certificato x509 (CSR).
  • -nodes: questa opzione indica a OpenSSL di ignorare la crittografia del certificato SSL utilizzando una passphrase. L'idea qui è quella di consentire ad Apache di leggere il file senza alcun tipo di intervento da parte dell'utente, cosa che non sarebbe possibile se fosse fornita una passphrase.
  • -newkey rsa:2048 – Ciò indica che vogliamo creare contemporaneamente una nuova chiave e un nuovo certificato. La porzione rsa:2048 implica che vogliamo creare una chiave RSA a 2048 bit.
  • -keyout: questa opzione specifica dove archiviare il file della chiave privata generato al momento della creazione.
  • -out – L'opzione specifica dove posizionare il certificato SSL creato.

Passaggio 3: installa il certificato SSL autofirmato locale su Apache

4. Dopo aver generato il file del certificato SSL, è ora il momento di installare il certificato utilizzando le impostazioni del server web Apache. Apri e modifica il file di configurazione /etc/httpd/conf.d/ssl.conf.

sudo vi /etc/httpd/conf.d/ssl.conf

Assicurati di avere le seguenti righe tra i tag dell'host virtuale.

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

Salvare ed uscire dal file. Per rendere effettive le modifiche, riavviare Apache utilizzando il comando:

sudo systemctl restart httpd

5. Affinché gli utenti esterni possano accedere al tuo server, devi aprire la porta 443 attraverso il firewall come mostrato.

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

Passaggio 3: test del certificato SSL autofirmato locale su Apache

Con tutte le configurazioni in atto, avvia il browser e sfoglia l'indirizzo del tuo server utilizzando l'indirizzo IP del server o il nome di dominio utilizzando il protocollo https.

Per semplificare i test, potresti prendere in considerazione il reindirizzamento del protocollo HTTP su HTTPS sul server web Apache. In questo modo ogni volta che navighi nel dominio in semplice HTTP, verrà automaticamente reindirizzato al protocollo HTTPS.

Quindi esplora il dominio o l’IP del tuo server

https://domain_name/

Riceverai un avviso che ti informa che la connessione non è sicura come mostrato. Questo varierà da un browser all'altro. Come puoi immaginare, l'avviso è dovuto al fatto che il certificato SSL non è firmato dall'autorità di certificazione e il browser lo registra e segnala che il certificato non può essere considerato attendibile.

Per procedere al tuo sito web, fai clic sulla scheda "Avanzate" come mostrato sopra:

Successivamente, aggiungi l'eccezione al browser.

Infine, ricarica il browser e osserva che ora puoi accedere al server, anche se sulla barra degli URL verrà visualizzato un avviso che il sito non è completamente sicuro per lo stesso motivo per cui il certificato SSL è autofirmato e non firmato dal Autorità di certificazione.

Ci auguriamo che ora tu possa procedere con la creazione e l'installazione di un certificato SSL autofirmato sul server Web Apache localhost su CentOS 8.