![Page 1: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocuments.net/reader036/viewer/2022081508/559487dc1a28ab027d8b4577/html5/thumbnails/1.jpg)
![Page 2: Apache HTTP Server - Funzionalità - Configurazione - Virtual Host - SSL e https](https://reader036.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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.vdocuments.net/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