La sicurezza è una componente fondamentale nella gestione di un servizio cloud come Nextcloud, specialmente quando si tratta di proteggere i dati degli utenti durante la trasmissione. L’adozione del protocollo HTTPS, che utilizza la crittografia SSL/TLS, è essenziale per garantire che le comunicazioni tra il server e i client avvengano in modo sicuro.
Nel caso di Nextcloud, è possibile configurare un certificato SSL auto-firmato (Self-Signed) per abilitare HTTPS, senza dipendere da un’autorità di certificazione (CA) esterna. Questa soluzione è particolarmente utile in ambienti di test o per configurazioni interne in cui la sicurezza è necessaria, ma non si desidera o non si può acquistare un certificato ufficiale.
Se il tuo server Nextcloud non ha un nome di dominio, puoi comunque proteggere l’interfaccia web generando un certificato SSL autofirmato.
Questo certificato consentirà l’accesso all’interfaccia Web tramite una connessione crittografata, ma non sarà in grado di verificare l’identità del server, quindi è probabile che il browser visualizzi un avviso.
PREREQUISITI
Installazione e Configurazione base di Nextcloud Community Edition su Ubuntu Server 24.04
ABILITAZIONE DEL MODULO SSL SU APACHE
Prima di poter utilizzare qualsiasi certificato SSL, dobbiamo abilitare, un modulo Apache che fornisce supporto per la crittografia SSL.mod_ssl
Abilitare con il comando:
0 |
a2enmod ssl |
Riavviare Apache per attivare il modulo con il comando:
0 |
sudo systemctl restart apache2 |
CREAZIONE DEL CERTIFICATO SSL
Ora che Apache è pronto per utilizzare la crittografia, passare alla generazione di un nuovo certificato SSL. Il certificato memorizzerà alcune informazioni di base sul tuo sito e sarà accompagnato da un file chiave che consente al server di gestire in modo sicuro i dati crittografati.
Possiamo creare la chiave SSL e i file del certificato con il comando:
0 |
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt |
Di seguito la spiegazione delle varie opzioni che utilizziamo nel comando:
openssl: questo è lo strumento da riga di comando per la creazione e la gestione di certificati, chiavi e altri file OpenSSL.
req -x509: specifica che si desidera utilizzare la gestione delle richieste di firma del certificato (CSR) X.509. X.509 è uno standard di infrastruttura a chiave pubblica a cui SSL e TLS aderiscono per la gestione di chiavi e certificati.
nodes: indica a OpenSSL di ignorare l’opzione per proteggere il nostro certificato con una passphrase. Abbiamo bisogno che Apache sia in grado di leggere il file, senza l’intervento dell’utente, all’avvio del server. Una passphrase impedirebbe che ciò accada, poiché dovremmo inserirla dopo ogni riavvio.
days 365: questa opzione consente di impostare il periodo di tempo durante il quale il certificato sarà considerato valido. L’abbiamo fissato per un anno qui. Molti browser moderni rifiuteranno tutti i certificati validi per più di un anno.
newkey rsa:2048: Specifica che vogliamo generare contemporaneamente un nuovo certificato e una nuova chiave. Non è stata creata la chiave necessaria per firmare il certificato in un passaggio precedente, quindi è necessario crearla insieme al certificato. La parte indica di creare una chiave RSA lunga 2048 bit.rsa:2048
keyout: questa riga indica a OpenSSL dove posizionare il file della chiave privata generato che stiamo creando.
out: indica a OpenSSL dove posizionare il certificato che stiamo creando.
Dovremmo rispondere ad una serie di domande e quindi visualizzare il seguente output:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
..+............+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+....+........+...+.+...+....................+.+.....+....+...........+.+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+..+.......+.....+.+..+...............+.......+...+............+..+.+.........+.....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...................+....+.....+..........+...+......+......+...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*.+.....+....+...+..+...+....+........+...+...+.+...+......+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*....+....+..+...+.+...........+..................+...+....+........+.+......+.........+...........+.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]: INSERIRE LE DUE LETTERE DELLA COUNTRY State or Province Name (full name) [Some-State]: INSERIRE STATO Locality Name (eg, city) []: INSERIRE LA CITTA' Organization Name (eg, company) [Internet Widgits Pty Ltd]: INSERIRE LE INFO-SOCIETA' Organizational Unit Name (eg, section) []: INSERIRE LA SEZIONE Common Name (e.g. server FQDN or YOUR name) []: INSERIRE L'FQDN-DEL-SERVER Email Address []: INSERIRE L'INDIRIZZO E-MAIL |
Entrambi i file creati verranno inseriti nelle sottodirectory appropriate in ./etc/ssl
Successivamente procedere con la configurazione di Apache per utilizzare il nuovo certificato e la nuova chiave.
CONFIGURAZIONE DI APACHE PER L’UTILIZZO DELL’SSL
Editare il file di configurazione di Apache utilizzato da Nextcloud con il comando:
0 |
sudo nano /etc/apache2/sites-available/000-default.conf |
Quindi all’interno del file incollare le seguenti righe:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<VirtualHost *:443> ServerName FQDN-SERVER.dominio.local DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15552000; incl> </IfModule> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> <Directory /var/www/html> AllowOverride All </Directory> |
Salvare e chiudere il file di configurazione
NOTA BENE: Inserire al posto di FQDN-SERVER.dominio.local il nome del server Nextcloud
REINDIRIZZAMENTO DA HTTP A HTTPS
Attualmente, la configurazione risponderà solo alle richieste HTTPS sulla porta.
È buona norma rispondere anche sulla porta 80, anche se si desidera forzare la crittografia di tutto il traffico e reindirizzarle in HTTPS.
Editare il file di configurazione di Apache utilizzato da Nextcloud con il comando:
0 |
sudo nano /etc/apache2/sites-available/000-default.conf |
Quindi all’interno del file incollare le seguenti righe:
0 1 2 3 |
<VirtualHost *:80> ServerName FQDN-SERVER.dominio.local Redirect / https://FQDN-SERVER.dominio.local/ </VirtualHost> |
Salvare e chiudere il file di configurazione
NOTA BENE: Inserire al posto di FQDN-SERVER.dominio.local il nome del server Nextcloud
Riavviare Apache con il comando:
0 |
sudo systemctl reload apache2 |
A questo punto Nextcloud sarà utilizzabile solo in HTTPS con la protezione del certificato SSL Self-Signed.
0 commenti