Alcune domande
per poter comprendere bene Apache2 e poter configurare apache con https dobbiamo prima comprendere alcune cose legate ad apache
- Cosa sono i “moduli” in apache? Come si abilitano? Come si disabilitano?
Il server web Apache è uno dei server web più popolari e potenti al mondo, grazie in parte alla sua facilità diamministrazione e flessibilità. Questa flessibilità deriva dal design modulare di Apache. I moduli consentono ad Apache di eseguire funzioni aggiuntive, come la riscrittura nativa degli URL per supportare la crittografia SSL.
Per abilitare i moduli si utilizza il comando a2enmod e per disabilitarli si utilizza a2dismod - Cosa contiene /etc/apache2 ? quali sono le direttive principali di apache2.conf?
le direttive di configurazione di Apache sono sparse in più file, tutti situati in sottodirectory di /etc/apache2.
apache2.conf è il file di configurazione primario e contiene le direttive di configurazione principali In Ubuntu e Debian, la maggior parte del file è per le definizioni globali e la configurazione del server predefinito e degli host virtuali viene gestita alla fine, utilizzando “Include …” La sezione globale conterrà parametri come
– TIMEOUT = indica il tempo di timeout nelle risposte
– KEEPALIVE = Questa opzione, se impostata su “On”, consentirà a ciascuna connessione di
rimanere aperta per gestire più richieste dallo stesso client.
Se è impostato su “Off”, ciascuna richiesta dovrà stabilire una nuova connessione, che può
comportare un sovraccarico significativo a seconda della configurazione e della situazione
del traffico.
– MAXKEEPALIVEREQUESTS= indica il numero di richieste massime che possono essere gestite
da una connessione
– KEEPALIVETIMEOUT = Questa impostazione specifica per quanto tempo attendere la
richiesta successiva dopo aver terminato l’ultima. Se viene raggiunta la soglia di timeout, la
connessione morirà. - Cosa indica la direttiva “DocumentRoot” di Apache2? Qual’è il suo valore?
Questa direttiva imposta la directory da cui httpd servirà i file. Di default è “DocumentRoot “/usr/local/apache/htdocs”” ma il path può ovviamente essere modificato in base alle esigenze - Directory “available” e “enabled”
La dir “conf-available” contiene i file di configurazione per caricare i moduli e configurarli
La dir “conf-enabled” detiene i collegamenti simbolici ai file in / etc / apache2 / conf-available. Quando un file di configurazione è collegato simbolicamente, verrà abilitato al successivo riavvio di Apache. - Cosa sono le “per user web directory”? Come funzionano?
Sui sistemi con più utenti, ogni utente può avere la possibilità di avere un sito Web nella propria directory home utilizzando la direttiva UserDir. I visitatori di un URL http://example.com/~username/ otterranno il contenuto dalla directory home dell’utente “nomeutente”, preso dalla sottodirectory specificata dalla direttiva UserDir.
Di default l’accesso a queste directory non è abilitato. - a2ensite, a2dissite, a2enmod, a2dismod, apache2ctl
a2ensite è uno script che abilita il sito specificato (che contiene un blocco ) all’interno della configurazione di apache2. a2dissite invece disabilita un sito specificato, rimuovendo i link simbolici. apache2ctl è un front-end del server HTTP (HyperText Transfer Protocol) di Apache. È progettato per aiutare l’amministratore a controllare il funzionamento del demone Apache2 di Apache.
Configurazione HTTPS con apache2
TLS e il suo predecessore SSL, (secure sockets layer), sono protocolli Web utilizzati per avvolgere il traffico normale in un pacchetto protetto e crittografato.
1) Creazione certificato SSL
TLS / SSL funziona utilizzando una combinazione di un certificato pubblico e una chiave privata. La chiave SSL è tenuta segreta sul server e viene utilizzato per crittografare il contenuto inviato ai client. Il certificato SSL è condiviso pubblicamente con chiunque ne faccia richiesta. Può essere utilizzato per decodificare il contenuto firmato dalla chiave SSL associata.
Per creare la chiave basta eseguire il seguente comando
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -
keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apacheselfsigned.crt
in seguito bisogna creare i parametri Diffie-Hellman:
sudo openssl dhparam –out /etc/ssl/certs/dhparam.pem 2048
2) Configurare apache per l’utilizzo di SSL
per prima cosa bisogna modificare il file Virtual Hosts SSL:
sudo nano /etc/apache2/sites-available/defaultssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin your_email@example.com
ServerName server_domain_or_IP
. . .
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
</IfModule>
Una buona pratica è anche quella di effettuare un redirect su HTTPS ogni qual volta un utente
visiti il sito in http.
Per permettere ciò basta modificare il file default.conf
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
. . .
Redirect "/" "https://your_domain_or_IP/"
. . .
</VirtualHost>
3) Abilitare le modifiche
Per abilitare il servizio con le modifiche basterà effettuare i seguenti comandi:
sudo a2ensite default-ssl
sudo a2enconf ssl-params
Per effettuare un controllo degli errori basterà scrivere:
sudo apache2ctl configtest
infine basta rivviare il servizio
sudo systemctl restart apache2