Ricerca nel sito web

Serie RHCE: implementazione di HTTPS tramite TLS utilizzando Network Security Service (NSS) per Apache - Parte 8


Se sei un amministratore di sistema responsabile della manutenzione e della protezione di un server Web, non puoi permetterti di non dedicare i tuoi migliori sforzi per garantire che i dati serviti o che attraversano il tuo server siano protetti in ogni momento.

Per garantire comunicazioni più sicure tra client web e server, è nato il protocollo HTTPS come combinazione di HTTP e SSL ( Secure Sockets Layer) o, più recentemente, TLS (Transport Layer Security).

A causa di alcune gravi violazioni della sicurezza, SSL è stato deprecato a favore del più robusto TLS. Per questo motivo, in questo articolo spiegheremo come proteggere le connessioni tra il tuo server web e i client utilizzando TLS.

Questo tutorial presuppone che tu abbia già installato e configurato il tuo server web Apache. In caso contrario, fare riferimento al seguente articolo in questo sito prima di procedere oltre.

  1. Installa LAMP (Linux, MySQL/MariaDB, Apache e PHP) su RHEL/CentOS 7

Installazione di OpenSSL e utilità

Prima di tutto, assicurati che Apache sia in esecuzione e che sia http che https siano consentiti attraverso il firewall:


systemctl start http
systemctl enable http
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https

Quindi installa i pacchetti necessari:


yum update && yum install openssl mod_nss crypto-utils

Importante: tieni presente che puoi sostituire mod_nss con mod_ssl nel comando sopra se desideri utilizzare OpenSSL invece di NSS (Network Security Service) per implementare TLS (quale utilizzare dipende interamente da te , ma in questo articolo utilizzeremo NSS poiché è più robusto; ad esempio, supporta i recenti standard di crittografia come PKCS #11).

Infine, disinstalla mod_ssl se scegli di utilizzare mod_nss, o viceversa.


yum remove mod_ssl

Configurazione NSS (servizio di sicurezza di rete)

Dopo l'installazione di mod_nss, il suo file di configurazione predefinito viene creato come /etc/httpd/conf.d/nss.conf. Dovresti quindi assicurarti che tutte le direttive Listen e VirtualHost puntino alla porta 443 (porta predefinita per HTTPS):


Listen 443
VirtualHost _default_:443

Quindi riavvia Apache e controlla se il modulo mod_nss è stato caricato:


apachectl restart
httpd -M | grep nss

Successivamente, dovrebbero essere apportate le seguenti modifiche al file di configurazione /etc/httpd/conf.d/nss.conf:

1. Indica la directory del database NSS. È possibile utilizzare la directory predefinita o crearne una nuova. In questo tutorial utilizzeremo l'impostazione predefinita:


NSSCertificateDatabase /etc/httpd/alias

2. Evita l'immissione manuale della passphrase a ogni avvio del sistema salvando la password nella directory del database in /etc/httpd/nss-db-password.conf:


NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

Dove /etc/httpd/nss-db-password.conf contiene SOLO la seguente riga e mypassword è la password che imposterai successivamente per il database NSS:


internal:mypassword

Inoltre, i suoi permessi e proprietà dovrebbero essere impostati rispettivamente su 0640 e root:apache:


chmod 640 /etc/httpd/nss-db-password.conf
chgrp apache /etc/httpd/nss-db-password.conf

3. Red Hat consiglia di disabilitare SSL e tutte le versioni di TLS precedenti a TLSv1.0 a causa del POODLE SSLv3 (ulteriori informazioni qui).

Assicurati che ogni istanza della direttiva NSSProtocol sia riportata come segue (probabilmente ne troverai solo una se non stai ospitando altri host virtuali):


NSSProtocol TLSv1.0,TLSv1.1

4. Apache rifiuterà di riavviarsi poiché si tratta di un certificato autofirmato e non riconoscerà l'emittente come valido. Per questo motivo, in questo caso particolare dovrai aggiungere:


NSSEnforceValidCerts off

5. Sebbene non sia strettamente richiesto, è importante impostare una password per il database NSS:


certutil -W -d /etc/httpd/alias