APACHE 2 WEB SERVER Configuration

Alcune domande

per poter comprendere bene Apache2 e poter configurare apache con https dobbiamo prima comprendere alcune cose legate ad apache

  1. 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
  2. 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à.
  3. 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
  4. 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.
  5. 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.
  6. 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

Leave a Reply

Your email address will not be published. Required fields are marked *