apache http server - funzionalità - configurazione - virtual host - ssl e https
DESCRIPTION
Master: Amministratore Linux - Livello Avanzato Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato. Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA. I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno. Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-adminTRANSCRIPT
![Page 1: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/1.jpg)
![Page 2: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/2.jpg)
Argomenti
• Apache httpd
• Directory importanti
• File di configurazione
• Permessi d’accesso
• Virtual Host
• Moduli ed estensioni
• SSL e https
• PHP
Percorso 7 Apache HTTP 2
![Page 3: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/3.jpg)
httpd.apache.org
Percorso 7 Apache HTTP 3
![Page 4: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/4.jpg)
Diffusione dei web server
Percorso 7 Apache HTTP 4
![Page 5: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/5.jpg)
Il lavoro del server http
• Rimani in attesa (LISTEN) di una richiesta http
• Analizza la richiesta
– Estrae cookie e parametri
– [statica] Restituisce il file
– [dinamica] Attiva l’application server
• Compone la risposta
• Invia la risposta
• Chiude la connessione e dimentica tutto
Percorso 7 Apache HTTP 5
![Page 6: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/6.jpg)
Orientarsi in Apache
• DocumentRoot
• Moduli
• Configurazione
• Logs
• Avvio processo
• Posizione dei file
Percorso 7 Apache HTTP 6
sudo apt-get install apache2
![Page 7: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/7.jpg)
DocumentRoot, URL, File
• DocumentRoot :
– la cartella nella quale sono salvati i file statici distribuiti via http, o gli script dinamici attivati via http
– Corrisponde alla “radice del sito web”: /
• Esempio: http://my.example.com/info/contact.html viene mappato su {WebRoot}/info/contact.html
– URL Mapping
– URL Rewriting
Percorso 7 Apache HTTP 7
![Page 8: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/8.jpg)
Moduli
• La funzionalità http “base” è insita nel server (core)
• Molte funzionalità aggiuntive sono disponibili sotto forma di “moduli” (~100) che possono essere installati, configurati e attivati
• Ogni modulo si inserisce nella catena di elaborazione della richiesta
• Attivi su specifici tipi di file, o cartelle, o richieste, o fasi della risposta (hook)
• Esistono moduli di terze parti (es. mod_php).
Percorso 7 Apache HTTP 8
![Page 9: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/9.jpg)
Moduli installati
Percorso 7 Apache HTTP 9
![Page 10: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/10.jpg)
Configurazione
• /etc/apache2/apache2.conf
– File da esso inclusi
• Il file è diviso in sezioni <sezione> … </sezione>
• Ogni sezione contiene una serie di direttive Parametro = Valore
• Direttive interpretate sia dal server http, sia dai moduli di estensione caricati
Percorso 7 Apache HTTP 10
![Page 11: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/11.jpg)
Log
• /var/log/apache2/
• Access log
• Error log
• Rotazione dei log
Percorso 7 Apache HTTP 11
![Page 12: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/12.jpg)
Gestione dei processi httpd
$ sudo /etc/init.d/apache2 start
$ sudo /etc/init.d/apache2 stop
$ sudo /etc/init.d/apache2 restart
$ sudo /etc/init.d/apache2 reload
$ /etc/init.d/apache2 status
$ sudo service apache2 start
$ sudo service apache2 stop
$ sudo service apache2 restart
$ sudo service apache2 reload
$ service apache2 status
Percorso 7 Apache HTTP 12
![Page 13: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/13.jpg)
Posizione dei file
Variabile Posizione
ServerRoot /etc/apache2
Configurazione /etc/apache2
Log /var/log/apache2
Sito principale sites-enabled/000-default.conf
DocumentRoot /var/www/html
Moduli /usr/lib/apache2/modules
Variabili d’ambiente /etc/apache2/envvars
PID file /var/run/apache2/apache2.pid
Percorso 7 Apache HTTP 13
![Page 14: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/14.jpg)
Posizione dei file
Variabile Posizione
ServerRoot /etc/apache2
Configurazione /etc/apache2
Log /var/log/apache2
Sito principale sites-enabled/000-default.conf
DocumentRoot /var/www/html
Moduli /usr/lib/apache2/modules
Variabili d’ambiente /etc/apache2/envvars
PID file /var/run/apache2/apache2.pid
Percorso 7 Apache HTTP 14
![Page 15: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/15.jpg)
Percorso 7 Apache HTTP 15
https://help.ubuntu.com/14.04/serverguide/httpd.html
![Page 16: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/16.jpg)
Attivazione/disattivazione funzionalità
• Ubuntu ha previsto diverse configurazioni
– enabled: attualmente attive
– Available: pronte per essere attivate (e configurate)
• Scripts: a2{en|dis}{mod|conf|site}
Percorso 7 Apache HTTP 16
![Page 17: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/17.jpg)
Creare pagine HTML
• Aggiungere file in DocumentRoot
– /var/www/html
• Il processo “apache2” gira come utente “www-data”
– File HTML leggibili da questo utente
Percorso 7 Apache HTTP 17
![Page 18: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/18.jpg)
Esercizio
• Aprire (e leggere) la pagina web di default installata da Ubuntu
• Creare un file prova.html nella DocumentRoot con del contenuto HTML qualsiasi
• Aprire via browser il file prova.html
• Verificare access log ed error log
Percorso 7 Apache HTTP 18
![Page 19: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/19.jpg)
Sintassi apache2.conf
• Il file di default contiene molti commenti esplicativi
• L’ordine delle direttive non è significativo
• Una direttiva per riga ( “\” finale unisce righe successive)
• Direttive case-insensitive, molti argomenti case-sensitive
• Commenti: “#”
Percorso 7 Apache HTTP 19
![Page 20: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/20.jpg)
Direttive principali (1)
• ServerRoot
– Directory principale per l’installazione
– Molti path sono definiti come path relativi alla ServerRoot
• DocumentRoot
– Directory di default corrispondente alla radice / del sito
Percorso 7 Apache HTTP 20
![Page 21: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/21.jpg)
Direttive principali (2)
• Listen
– Specifica su quali interfacce, indirizzi IP e porte il server rimane in ascolto
– Se specifico solo la porta, ascolta su tutti gli indirizzi IP della macchina
• PidFile
– File contenente il PID del processo apache principale
– I diversi thread del server sono processi figli di questo PID
Percorso 7 Apache HTTP 21
![Page 22: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/22.jpg)
Direttive principali (3)
• DirectoryIndex
– Nome del file da servire se la URI richiesta corrisponde al dome di una directory
– Solitamente: index.html
• ErrorDocument
– Specifica la pagina HTML generata quando si verifica un errore a livello HTTP
– Può essere un file di testo, un redirect locale o un redirect esterno
Percorso 7 Apache HTTP 22
![Page 23: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/23.jpg)
Direttive principali (4)
• Alias – Associa una URI (o un prefisso di URI) ad una certa
directory fisica
– Alias /icons/ /usr/local/apache/icons/
• Redirect – Segnala al browser che una determinata URI è stata
spostata (su questo o su un altro server) (HTTP 301)
– Redirect /service http://foo2.example.com/service
Percorso 7 Apache HTTP 23
![Page 24: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/24.jpg)
Direttive principali (5)
• Order/Allow/Deny
– Specificano i permessi e le restrizioni di accesso
– Order: Deny, Allow oppure Order: Allow, Deny
– Deny ed Allow specificano dei filtri di indirizzi IP, netmask
• Deny from all
• Allow from 192.168.54.*
Percorso 7 Apache HTTP 24
![Page 25: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/25.jpg)
Direttive principali (5)
• Order/Allow/Deny
– Specificano i permessi e le restrizioni di accesso
– Order: Deny, Allow oppure Order: Allow, Deny
– Deny ed Allow specificano dei filtri di indirizzi IP, netmask
• Deny from all
• Allow from 192.168.54.*
Percorso 7 Apache HTTP 25
![Page 26: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/26.jpg)
Direttive principali (6)
• Options – Configura le funzioni aggiuntive disponibili nelle directory – Indexes – Se manca DirectoryIndex, genera
automaticamente l’elenco dei file presenti • AddIcon – Specifica immagini delle icone per i vari tipi di
file
– Multiviews – Attiva la negoziazione della lingua
– ExecCGI – Permette l’esecuzione di script CGI
– Includes – Attiva l’elaborazione di Server-Side includes o parsed HTML
Percorso 7 Apache HTTP 26
![Page 27: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/27.jpg)
Sezione <Directory>
• Specifica una serie di direttive che si applicano solamente ad un sotto-insieme dell’albero dei file
• Specifica il full path (fisico) a cui si applica
Percorso 7 Apache HTTP 27
![Page 28: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/28.jpg)
Sezione <Files>
• Applica un insieme di directory a tutti i file il cui nome corrisponde
Percorso 7 Apache HTTP 28
![Page 29: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/29.jpg)
Sezione <Location>
• Applica le direttive quando la URI Richiesta (e non il path fisico) corrisponde
Percorso 7 Apache HTTP 29
![Page 30: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/30.jpg)
Il file.htaccess
• Oltre alle specifiche date nelle sezioni <Directory>, ogni directory può avere un file chiamato .htaccess
• Il .htaccess può contenere direttive aggiuntive, che si sovrappongono a quelle dichiarate nei file .conf
• Rallenta il server (deve essere letto per ogni richiesta)
Percorso 7 Apache HTTP 30
![Page 31: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/31.jpg)
Esercizio
• Creare un mini-sito
– File HTML accessibili sotto la URL /sito (path fisico /var/www/sito)
– File immagini accessibili sotto la URL /imgsito (path fisico /var/www/immagini)
Percorso 7 Apache HTTP 31
![Page 32: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/32.jpg)
Virtual Hosts
• Più siti web, indipendenti, gestiti sullo stesso server
• Ogni virtual host ha una configurazione del tutto indipendente
– ServerName, DocumentRoot, Aliases, log files, etc.
– http://httpd.apache.org/docs/current/vhosts/
Percorso 7 Apache HTTP 32
![Page 33: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/33.jpg)
Virtual Hosts
• Apache supporta due tipi di virtual host – Name-based virtual host
• Seleziona la configurazione virtuale sulla base del nome DNS utilizzato dal client
• Permette molti virtual host sullo stesso IP address
• Necessario agire sul DNS
– IP-based virtual host • Seleziona la configurazione virtuale sulla base dell’IP
address richiesto
• Necessario che il server abbia più indirizzi IP, uno per ciascun sito
Percorso 7 Apache HTTP 33
![Page 34: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/34.jpg)
Name-Based Virtual Host
• ServerName
seleziona quale
virtual host attivare
• ServerAlias può
specificare nomi
aggiuntivi
• DocumentRoot
diversa
Percorso 7 Apache HTTP 34
![Page 35: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/35.jpg)
IP-Based Virtual Host
• Indirizzo IP diverso per I diversi host
• Direttive diverse per ciascun sito
• Saranno necessari comandi Listen per ciascun IP
Percorso 7 Apache HTTP 35
![Page 36: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/36.jpg)
Virtual Host su Ubuntu
• Prendere ad esempio il sito 000-default.conf
• Creare un nuovo file .conf per il nostro sito, nella directory -available
• Attivare il sito (a2ensite)
Percorso 7 Apache HTTP 36
![Page 37: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/37.jpg)
Esercizio
• Creare due virtual host IP-based
– Indirizzo IP della rete Host Only
– Porte di rete diverse (es. 80 ed 81)
– Definire DocumentRoot distinte e verificare che funzioni
• Ripetere l’esercizio con virtual host name-based
– Occorrerà modificare il file di hosts della macchina client e della macchina server
Percorso 7 Apache HTTP 37
![Page 38: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/38.jpg)
HTTPS e siti web sicuri
• La connessione HTTP è in chiaro
• E’ possibile cifrare con SSL la connessione utilizzando il protocollo HTTPS (porta 443)
• Gestito dal modulo mod_ssl (nel package apache2-common)
• Necessario un «certificato server»
Percorso 7 Apache HTTP 38
![Page 39: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/39.jpg)
Attivazione https
• Attivare il modulo mod_ssl
– sudo a2enmod ssl
• Verificare il sito di prova descritto in /etc/apache2/sites-available/default-ssl.conf
• Attivare il sito https di prova
– sudo a2ensite default-ssl
• sudo service apache2 restart
Percorso 7 Apache HTTP 39
![Page 40: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/40.jpg)
Certificati?
• Il sito default-ssl.conf lavora con certificati self-signed
• Necessario sostituirli con certificati firmati da un’autorità riconosciuta
Percorso 7 Apache HTTP 40
![Page 41: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/41.jpg)
Direttive per https
• SSLEngine on
• SSLCertificateFile
– Certificato in formato PEM
– Può contenere la catena di certificazione
• SSLCertificateKeyFile
– Contiene la chiave privata del certificato
– Se la chiave privata è crittografata, sarà necessario inserire la passphrase all’avvio di apache
Percorso 7 Apache HTTP 41
![Page 42: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/42.jpg)
Esempio minimo
Percorso 7 Apache HTTP 42
![Page 43: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/43.jpg)
Esercizio
• Attivare il server HTTPS di default
• Attivare il server HTTPS per almeno uno dei virtual host configurati prima.
Percorso 7 Apache HTTP 43
![Page 44: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/44.jpg)
Riferimenti
• http://httpd.apache.org/
• https://help.ubuntu.com/14.04/serverguide/httpd.html
Percorso 7 Apache HTTP 44
![Page 45: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocumenti.com/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/45.jpg)
These slides are licensed under a Creative Commons
Attribution Non Commercial
Share Alike 4.0 International
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/
Versione in Italiano:
https://creativecommons.org/licenses/by-nc-sa/4.0/deed.it