Apache è un server HTTP freeware (completo di sorgenti C), sviluppato da un certo numero di programmatori. Un Web Server per il protocollo HTTP



Documenti analoghi
LA GESTIONE DELLE VISITE CLIENTI VIA WEB

REOL-Services Quick Reference Ver. 1.1 Tecno Press Srl. 1

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

19. LA PROGRAMMAZIONE LATO SERVER

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Mon Ami 3000 MACommerce La soluzione per il commercio elettronico totalmente integrata con Mon Ami 3000

GUIDA UTENTE PRIMA NOTA SEMPLICE

Software Servizi Web UOGA

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

SSL: applicazioni telematiche SSL SSL SSL. E-commerce Trading on-line Internet banking... Secure Socket Layer

GUIDA UTENTE MONEY TRANSFER MANAGER

MANUALE UTENTE Fiscali Free

GUIDA UTENTE BILLIARDS COUNTER (Vers )

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Manuale Utente MyFastPage

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Manuale di Aggiornamento BOLLETTINO. Rel H4. DATALOG Soluzioni Integrate a 32 Bit

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Guida alla registrazione on-line di un DataLogger

CONFIGURAZIONE XAMPP + SSL (HTTPS)

Installazione LAMP. Installare un server lamp su Linux Ubuntu. Per installare un server LAMP in Ubuntu come prima cosa apriamo il terminale:

SETEFI. Marco Cantarini, Daniele Maccauro, Domenico Marzolla. 19 Aprile 2012

Aruba Sign 2 Guida rapida

La sicurezza nel Web

Guida all accesso al portale e ai servizi self service

Manuale Utente PEC e Client di Posta tradizionale

FPf per Windows 3.1. Guida all uso

MyFRITZ!, Dynamic DNS e Accesso Remoto

Guida alla compilazione on-line delle domande di Dote Scuola A.S per le Famiglie INDICE

Client - Server. Client Web: il BROWSER

Corso basi di dati Installazione e gestione di PWS

SPSS Statistics per Windows - Istruzioni di installazione per (Licenza per utenti singoli)

Guida alla registrazione on-line di un NovaSun Log

Configurazione client di posta elettronica per il nuovo servizio . Parametri per la Configurazione dei client di posta elettronica

Guida alla compilazione on-line delle domande di Dote Scuola A.S per le Famiglie INDICE

DURC Client 4 - Guida configurazione Firma Digitale. DURC Client 4.1.7

Il web server Apache Lezione n. 3. Introduzione

UNIVERSITA DI CATANIA

GRUPPO CAMBIELLI. Posta elettronica (Webmail) Consigli di utilizzo

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

Windows Web Server 2008 R2 64bit 1x Processore Intel Atom Dual (2x core 1.80 GHz) Dispositivo di memorizzazione flash esterno 32GB

Installazione del software Fiery per Windows e Macintosh

Installazione di Moodle. Preparato per: Gruppo A, Piattaforma di E - Learning Preparato da: Cinzia Compagnone, Vittorio Saettone

UTILIZZO DEL SOFTWARE MONITOR

DINAMIC: gestione assistenza tecnica

Approfondimento di Marco Mulas

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

MANUALE PARCELLA FACILE PLUS INDICE

TS-CNS. Tessera Sanitaria Carta Nazionale dei Servizi. Manuale di installazione e configurazione. Versione del

Mac Application Manager 1.3 (SOLO PER TIGER)

2.1 Installazione e configurazione LMS [4]

Istruzioni operative instal azione FirmaVerifica3.0 Pag.1 di 27

Servizio di Posta elettronica Certificata (PEC)

Manuale Terminal Manager 2.0

Internet e posta elettronica. A cura di Massimiliano Buschi

1 Introduzione Installazione Configurazione di Outlook Impostazioni manuali del server... 10

Il Web Server e il protocollo HTTP

GUIDA ALL USO DEL PANNELLO DI GESTIONE SITO WEB

Manuale Utente SIRECO

MANUALE D USO DELLA PIATTAFORMA ITCMS

Manuale LiveBox APPLICAZIONE ANDROID.

TS-CNS. Tessera Sanitaria Carta Nazionale dei Servizi. Manuale di installazione e configurazione. Versione del

Introduzione Benvenuto nella guida del sito ecommerce di

CONFIGURAZIONE WAMP SERVER + SSL (HTTPS)

Application Server per sviluppare applicazioni Java Enterprise

START Affidamenti diretti e Procedure concorrenziali semplificate. Istruzioni per i concorrenti Ver. 1.0

VntRAS Communication Suite

filrbox Guida all uso dell interfaccia WEB Pag. 1 di 44

I.N.A.I.L. Certificati Medici via Internet. Manuale utente

1. Manuale d uso per l utilizzo della WebMail PEC e del client di posta tradizionale

GUIDA ALL UTILIZZO DEL PROGRAMMA TUTTORIFIUTI PER L ACCESSO AUTENTICATO AL PORTALE WEB

Configurazione di sicurezza di XAMPP

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Comunicazioni sicure su Internet: https e SSL. Fisica dell Informazione

SendMedMalattia v Manuale d uso

Dynamic DNS e Accesso Remoto

Manuale LiveBox APPLICAZIONE ANDROID.

Il seguente Syllabus è relativo al Modulo 7, Reti informatiche, e fornisce i fondamenti per il test di tipo pratico relativo a questo modulo

TERMINALE. Creazione e gestione di una postazione terminale di Eureka

Fate doppio click sul file con nome postgresql-8.0.msi e impostate le varie voci come riportato nelle immagini seguenti:

PROCEDURA AGGIORNAMENTO LISTE MEDIANTE L INTERFACCIA WEB

GateManager. 1 Indice. tecnico@gate-manager.it

NOVITÀ SITI COMMERCIALISTA

2015 PERIODO D IMPOSTA

Manuale di configurazione del client di posta Microsoft Outlook COME LEGGERE LA CASELLA PEC

Manuale Operativo per la firma digitale

Sistema Informativo di Teleraccolta EMITTENTI

Comando Generale Arma dei Carabinieri

Installazione di GFI Network Server Monitor

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Manuale d istruzione SBS

Dichiarazione di volontà in merito alla donazione di organi e tessuti

Apache 2, PHP5, MySQL 5

1) GESTIONE DELLE POSTAZIONI REMOTE

Questa guida vi illustrerà i principali passaggi da eseguire per l'inserimento dei Bandi di gara.

ENTRATEL: Servizio telematico Agenzia delle Entrate

Transcript:

APACHE-SSL Panoramica su Apache Università degli Studi di Salerno Facoltà di Scienza MM. FF. NN. Corso di Laurea in Informatica, AA. 2001-2002 A cura di Andrea Del Papa, Antonio Esposito, Cristian Gagliardi, Gerardo Morrongiello, Luigi Calaselice. 1 2 Premessa Apache è un server HTTP freeware (completo di sorgenti C), sviluppato da un certo numero di programmatori. La prima versione, basata su server NCSA, è stata sviluppata nel 1995. Un Web Server per il protocollo HTTP Affidabile, compatto e funzionale Cos è Apache Poiché era un insieme di patches sul server NCSA è stato chiamato un patchy server, da cui il nome Apache Server. Progettato per essere eseguito come processo standalone 3 4 Strumenti di Apache Apache mette a disposizione una serie di strumenti aggiuntivi: Sistemi di controllo d'accesso a più livelli Generazione di statistiche variamente strutturate Possibilità di integrare l HTML in modo dinamico(server-side Side Include) Grazie alla struttura modulare e alle Apache API possiamo integrare Apache con vari applicativi: Uno dei più interessanti è PHP Integrazione Linguaggio di programmazione che consente di integrare HTML ed SQL linguaggio per l'interrogazione di sistemi database quali Oracle. 5 6

Funzionalità e-commerce Panoramica su SSL Content Negotiation Language Negotiation Aliasing & Redirect Virtual Host Support & Directory Name Interpolation Cookies Variabili impostate dal server per gestire il customer-tracking o la gestione di una sessione Permette di selezionare la lingua del documento in base alla configurazione del browser-utente Algoritmo per scelta del file più appropriato da restituire ad una richiesta del navigatore Permette di dare dei nomi mnemonici alle proprie risorse e implementa redirezioni multiple tramite scrittura dell url Utile per gli ISP per ospitare siti diversi sullo stesso server, fornisce sistema per gestione di un sito e-commerce Message passing (GET,POS) Cookies Consente all'utente di effettuare prenotazioni e pagamenti online, accesso ad account, dischi e database remoti, ecc. 7 8 Introduzione Funzionalità fondamentali SSL (Secure Socket Layer protocol) è un protocollo aperto e non proprietario. Nato al fine di garantire la privacy delle comunicazioni su Internet. Permette alle applicazioni client/server di comunicare in modo da prevenire le intrusioni, le manomissioni e le falsificazioni dei messaggi. Sicurezza del Collegamento Nelle connessioni può essere eseguita usando la crittografia a chiave pubblica (per es. RSA, DSS ecc. ) Autenticazione I dati vengono protetti utilizzando algoritmi di crittografia a chiave simmetrica (ad es. DES, RC4,) Il livello di trasporto include un controllo sull'integrità del messaggio basato su un apposito MAC che utilizza funzioni hash sicure (es. SHA, MD5) Affidabilità 9 10 Composizione del protocollo Permette al server ed al client di autenticarsi a vicenda e di negoziare un algoritmo di crittografia e le relative chiavi. L handshake consente Protocollo SSL Handshake - 1 Al server di autenticarsi al client usando una tecnica a chiave pubblica. Interfacciato su di un protocollo di trasporto affidabile come il TCP. E usato per l'incapsulamento dei dati provenienti dai protocolli superiori. Al client ed al server di cooperare per la creazione delle chiavi simmetriche. Al client di autenticarsi al server. 11 12

Protocollo SSL Handshake - 2 Avvio di una connessione Nel caso sia il client ad avviare la connessione Protocollo SSL Handshake - 3 Avvio di una connessione Nel caso sia il server ad avviare la connessione Client Client Hello Server Client Hello Request Server Server Hello Client Hello Server Hello 13 14 Protocollo SSL Handshake - 4 Autenticazione Una volta avviata la fase di HELLO avviene l autenticazione Protocollo SSL Handshake - 5 Generazione delle chiavi Avvenuta l autenticazione si generano le chiavi Client Request Certificate Server Client Server key exchange Server Verify Certificate Request Certificate Client key exchange Server Hello done 15 16 Protocollo SSL Handshake - 6 Installazione di Apache Correttezza dati e Fine Si passa al controllo della correttezza dei dati ricevuti Client Change CipherSpec Change CipherSpec Server Finished Fine fase di HandShake Finished 17 18

Requisiti Richiesti Software Necessario Installazione possibile su qualsiasi piattaforma Linux, Unix e NT E necessario essere amministratori del sistema per poterlo installare Nel caso sia già presente Apache occorre disinstallarlo Webserver Apache versione 1.3.24 o superiore OpenSSL insieme di librerie che implementano SSL versione 0.9.6d Apache-SSL patch per rendere sicuro il webserver versione 1.48 19 20 Passi da seguire per l installazione: 1. Scaricare il software necessario da internet, cercando la versione più aggiornata dei vari pacchetti in modo da evitare di installare versioni su cui sono stati scoperti bug 2. Scompattare i vari pacchetti 3. Procedere all installazione Installazione tar xvzf openssl-0.9.6.tar.gz cd openssl-0.9.6/./config make make test make install Installazione OpenSSL Dopo aver scaricato il software bisogna seguire i seguenti comandi: Configura per la specifica Piattaforma Compila e Installa Scompatta la libreria OpenSSL 21 22 OpenSSL Installazione Apache-SSL - 1 Funzionalità offerte dalla libreria OpenSSL Creazione di parametri per la generazione delle chiavi DSA, DH e DSA Creazione di certificati X.509, CSR (Certificate Signing Requests) e CRL (Certificate Revocation Lists) Calcolo dell hash di messaggi Cifratura e Decifratura SSL e TSL client/server test Gestione della firma e cifratura di e-mail 23 tar xvzf apache_1.3.24.tar.gz cd apache_1.3.24 tar xvzf../apache_1.3.24+ssl_1.48.tar.gz./fixpatch Applica la patch./configure --prefix=dir* * è la directory in cui vogliamo installare Apache-SSL 24 Scompatta il Server Apache Scompatta la patch Apache-SSL Configura la directory di installazione

Installazione Apache-SSL - 2 Installazione Apache-SSL - 3 Se l installazione è andata a buon fine comparirà la seguente schermata../configure --prefix=dir* --enable-module=rewrite --enable-shared=rewrite make make install Compila e Installa Abilita il modulo rewrite ln -s DIR*/conf/httpsd.conf DIR*/conf/httpd.conf * è la directory in cui vogliamo installare Apache-SSL 25 26 Certificato SSL - 1 Certificato SSL - 2 I certificati digitali sono un meccanismo avanzato per la distribuzione delle chiavi publiche. Lo standard che definisce il formato del certificato è X.509 v3. Una volta creato il certificato bisogna che questo sia firmato da un autorità di certificazione (es. Verisign). Passi da seguire per ottenere un certificato sono: 1) Crearsi, con l'ausilio di qualche toolkit (per esempio OpenSSL) una coppia di chiavi 2) Preparare una CSR (Certificate Signing Request) ovvero una richiesta di firma di un certificato 3) Inviare alla CA, ad esempio via e-mail, la CSR 27 28 openssl genrsa -des -out webserver.ssl.key 1024 Genera una chiave privata con l algoritmo RSA Certificato SelfSigned - 1 Cifra la chiava con l algoritmo DES Numero di bit della chiave Certificato SelfSigned - 2 Generazione della chiave e del certificato per l autorità di certificazione di prova NostraCA openssl genrsa -des -out NostraCA.ca.key 2048 Crea un nuova CSR Specifica la chiave privata per cui è stata creata la CSR Crea un certificato di tipo self -signed invece che una CSR Chiave di 2048 bit openssl req -new -key webserver.ssl.key -out webserver.ssl.csr openssl req -new -x509 -key NostraCA.ca.key -out NostraCA.ca.cert 29 30

Certificato SelfSigned - 3 Configurazione di Apache Eseguiamo la firma del certificato del webserver Usata per la firma di una CSR Chiave privata con la quale firmare Certificato della CA opensslca -keyfile NostraCA.ca.key -cert NostraCA.ca.cert - in webserver.ssl.csr -out webserver.ssl.cert CSR da firmare Certificato del WebServer 31 32 33 Il file httpsd.conf - 1 La configurazione di Apache avviene attraverso l aggiunta di direttive di configurazione al file di testo httpsd.conf Il file si trova nella directory DIR/conf Bisogna inserire una sola direttiva per ogni riga Per facilitare la procedura di configurazione è possibile sostituire il file httpsd.conf di default creato da apache con quello di esempio, usato da noi per il progetto : httpsd.conf e adattarlo alle proprie esigenze Configurazione del Webserver : ip In questa presentazione faremo riferimento all indirizzo 127.0.0.2 come indirizzo ip del sito 127.0.0.2 è un indirizzo di loopback, può essere usato solo per testare il sito su una macchina locale. Per pubblicare il sito su internet,bisogna sostituirlo con il reale indirizzo del sito 34 Le direttive di configurazione Schema del file httpsd.conf La lista di tutte le direttive che si possono utilizzare è presente al seguente indirizzo : http://httpd.apache.org/docs/mod/directives.html Configurazione generale Httpsd.conf Configurazione Direttive SSL Virtual Hosts del server Port ServerName SSLCACertificatePath NameVirtualHost In questa presentazione illustreremo le più importanti Listen DocumentRoot SSLCACertificateFile User.Group SSLCertificatePath <VirtualHost >.. </VirtualHost> Vedremo anche le direttive di configurazione specifiche per SSL, la lista completa si trova all indirizzo : http://www.apache-ssl.org/docs.html SSLCertificateFile SSLCertificateKeyFile SSLVerifyClient SSLDisable 35 36

Direttive di Apache : Port e Listen Le direttive Port e Listen indicano ad Apache gli indirizzi ip e le porte, su cui deve accettare le connessioni da parte dei client La direttiva Port, serve a definire una porta diversa dalla porta 80 che è quella di default per comunicazioni http La direttiva Listen, indica ad apache un indirizzo ip e una porta su cui accettare le connessioni. La sintassi della direttiva Port è : Port # Direttive di Apache : Uso di Port Dove al posto di #,inseriamo il numero di porta che vogliamo definire. Nel nostro caso inseriamo la riga Port 443 Così facendo, definiamo la porta 443, che è la porta standard per le comunicazioni con SSL 37 38 Direttive di Apache : Uso di Listen Direttive di Apache : ServerName La sintassi della direttiva Listen è : Listen ip:porta Al posto di ip, inseriamo l indirizzo ipdel sito Al posto di porta, inseriamo la porta sulla quale vogliamo accettare le connessioni Il valore porta può contenere solo i valori definiti tramite la direttiva Port, e la porta 80 Nel nostro caso, aggiungiamo le righe : Listen 127.0.0.2:80 e Listen 127.0.0.2:443 39 La direttiva ServerName specifica il DNS del sito Se il sito non possiede un valido DNS, può essere utilizzato il suo indirizzo ip Se si utilizza il sito solo su una macchina locale, si può utilizzare l indirizzo di loopback o il DNS locale che nella maggior parte dei casi è localhost o linux 40 Direttive di Apache : Uso di ServerName Direttive di Apache : DocumentRoot La sintassi della direttiva ServerName è : ServerName DNS Dove al posto di DNS inseriamo il DNS del sito. Nel nostro caso, abbiamo aggiunto la riga : ServerName Linux La direttiva DocumentRoot indica la directory che contiene le pagine del sito. Tutte le richieste dei client verranno evase a partire dalla directory specificata da questa direttiva 41 42

Direttive di Apache : Uso di DocumentRoot Direttive di Apache : User e Group La sintassi di DocumentRoot è : DocumentRoot directory Dove al posto di directory, specifichiamo la directory che contiene le pagine del sito. Nel nostro caso abbiamo aggiunto la riga DocumentRoot DIR/htdocs Le direttive User e Group indicano rispettivamente, il nome utente e il gruppo con cui si collegano i client E evidente che deve essere specificato un utente che ha permessi di accesso limitati 43 44 Direttive di Apache : Uso di User e Group Direttive di Apache : I virtual hosts La sintassi delle due direttive è : User utente Group gruppo Per un corretto funzionamento del Webserver, l utente e il gruppo specificati devono essere presenti nel sistema; Nel nostro caso, aggiungiamo le righe : User nobody e Group nogroup 45 I virtual hosts sono un aspetto importante per il funzionamento del nostro sito Vengono utilizzati per mantenere più domini sullo stesso server Nel nostro caso ne abbiamo due, quello sicuro e quello non sicuro. 46 Direttive di Apache : I virtual hosts Per aggiungere dei virtual host al nostro server e configurarli, si usano le direttive NameVirtualHost Con NameVirtualHost si Definiscono i virtual host <VirtualHost >. </VirtualHost> Con questa direttiva possiamo Configurare i singoli virtual host 47 Direttive di Apache : NameVirtualHost Con la direttiva NameVirtualHost, possiamo aggiungere un virtual host La sintassi è : NameVirtualHost host:porta Dove al posto di host inseriamo il DNS del sito, se ne possiede uno, altrimenti inseriamo il suo indirizzo ip. Al posto di porta, inseriamo la porta sulla quale si deve mettere in ascolto il virtual host. Nel nostro caso abbiamo aggiunto NameVirtualHost 127.0.0.2:80 NameVirtualHost 127.0.0.2:443 48

Direttive di Apache : <VirtualHost > Direttive di Apache : <VirtualHost > Una volta aggiunti i virtual host che ci servono, passiamo alla loro configurazione La configurazione viene effettuata per ogni virtual host e ognuna è indipendente dalle altre <VirtualHost host:porta>.... </VirtualHost> All interno di questi tag possiamo Inserire qualsiasi direttiva di configurazione sia di Apache che di SSL Per ogni virtual host da configurare, aggiungiamo le direttive di configurazione all interno dei tag <VirtualHost host:porta>.... </VirtualHost> All interno di questi tag possiamo Inserire qualsiasi direttiva di configurazione sia di Apache che di SSL Ogni direttiva inserita, si riferirà solo all host che stiamo configurando. E importante inserire la direttiva SSLDisable all interno della configurazione dell host non sicuro 49 50 Direttive SSL Direttive SSL: SSLCACertificatePath e SSLCACertificateFile Queste due direttive servono per specificare la posizione e il nome del certificato dell autorità che ha firmato il certificato del Webserver, nel nostro caso si tratta dell autorità di prova. E la lista di tutte le direttive SSL Quelle sottolineate in rosso sono le più importanti Vediamole in dettaglio 51 La sintassi è : SSLCACertificatePath directory SSLCACertificateFile cert Dove directory e cert indicano rispettivamente la cartella contenente il certificato e il certificato vero e proprio. 52 Direttive SSL: SSLCertificateFile e SSLCertificateKeyFile Queste due direttive servono a localizzare il certificato e il file che contiene la chiave privata del Webserver La sintassi è simile alle due direttive della slide precedente: SSLCertificateFile cert SSLCertificateFile keyfile Dove cert e keyfile indicano il file del certificato e quello della chiave Direttive SSL : SSLVerifyClient - 1 Questa direttiva serve a specificare le verifiche che il Webserver deve effettuare sui client prima di accettare la connessione. La sintassi è : SSLVerifyClient # Il tipo di verifica da effettuare è specificato da un numero da 0 a 3 che andiamo a sostituire a # 53 54

Direttive SSL : SSLVerifyClient - 2 0 Non è richiesto che il Client abbia un certificato valido 1 Il Client può scegliere se esibire o meno un certificato valido 2 Il Client deve avere un certificato valido Direttive SSL : SSLVerifyDepth e SSLDisable La direttiva SSLVerifyDepth serve a specificare di quanti livelli si deve salire nella verifica dei certificati, nell albero di certificazione La sintassi è : SSLVerifyDepth # Dove al posto di #, indichiamo il numero dei livelli 3 - Il Client può presentare un certificato valido ma non è richiesto che questo sia firmato da un autorità di certificazione valida La direttiva SSLDisable non ha opzioni è serve a disabilitare il protocollo SSL. Viene usata all interno della configurazione del virtual host non sicuro 55 56 Avviare Apache Una volta configurato, Apache è pronto per essere eseguito la prima volta Il sito Per fare ciò, ci spostiamo nella directory DIR/bin/ ed eseguiamo il comando./httpsdctl start Per terminare l esecuzione di Apache, dalla directory DIR/bin/ digitiamo./httpsdctl stop Per effettuare un riavvio del Webserver, per esempio dopo la modifica del file di configurazione, digitiamo./httpsdctl restart 57 58 Presentazione Funzionalità Caratteristiche principali - Transazioni sicure durante l acquisto - Gestione Registro Clienti - Gestione Carrello Virtuale per ogni utente connesso - Gestione Listino Prezzi diviso per categoria di prodotto - Interfaccia grafica scalabile e leggera - Compatibile con qualunque browser per Internet Idea Principale: - Registrazione nuovo utente. - Accesso all area riservata ai clienti tramite utente e password. - Selezione dei prodotti da un listino. - Invio dei dati del mezzo di pagamento in maniera sicura - Acquisto dei prodotti selezionati. - Ricezione del preventivo. 59 60

Per installare il sito è necessario essere amministratori del sistema. Il sito è composto da un pacchetto di file compressi ed è già configurato per essere eseguito da un host chiamato linux. Impostazione del nome dell host: - Aprire il file etc/hosts. - Inserire la riga 127.0.0.2 linux. Creazione della directory del sito: - Spostarsi in DIR/httpsd/htdocs. - Eseguire mkdir eurostore. Installazione e Configurazione - 1 Impostazione dei permessi: - Dare i permessi di scrittura/lettura/esecuzione alla directory digitando chmod777. - Spostarsi all interno della directory cd eurostore. Copia dei file del sito: Installazione e Configurazione - 2 - Montare il cd con mount /cdrom. - Copia dei file nella directory del sito con cp /cdrom/eurostore/es.zip./ - Scompattare i file digitando unzipes.zip* - Smontare il cdrom con umount /cdrom 61 62 Impostazione dei permessi ai file.cgi,.pm e al contatore dei numeri seriali: - chmod 755 *.cgi - chmod 755 *.pm - chmod 666 seriale.dat E necessario modificare il file di configurazione httpsd.conf per abilitare i permessi aggiungendo le seguenti righe: <Directory /usr/local/httpsd/htdocs/eurostore > Options +ExecCGI </Directory> Configurazione del sito Per accedere alle funzionalità del sito, occorre aprire un browser (es. Netscape Communicator, ) Digitare come URL: http://linux/eurostore Funzionamento E consigliabile nominare subito un operatore di sistema il quale sarà l unico che potrà gestire i preventivi. Per completare l installazione è necessario riavviare il web server. 63 64 Presentazione del sito Registrazione dell operatore Nella pagina principale sono presenti: E necessario nominare un operatore di sistema per la gestione dei preventivi. Tale operatore deve registrarsi seguendo la seguente procedure: Una barra di comandi con i link alle pagine del sito liberamente visitabili. Una formper l inserimento della UserID e della Password per i clienti registrati. 1. Aprire la pagina principale e cliccare sul pulsante. 2. Nel campo Nome inserire il testo registrazione operatore. 3. Nel campo User IDinserire il testo sysop. 4. Nel campo Passwordinserire una password alfanumerica di almeno 6 caratteri. 5. Inviare il modulo ed attendere la connessione. Un pulsante per registrarsi 65 66

Registrazione nuovo utente Cliccando su si può accedere alla registrazione di un nuovo utente. Una volta compilati tutti i campi, l utente è registrato e potra così accedere all area riservata. Una volta registrati è possibile accedere all area clienti attraverso il form. In quest area è possibile effettuare gli acquisti online. Verrà visualizzato subito un elenco di prodotti da poter selezionare. Accesso all area clienti 67 68 Cliccandosu una categoria, è possibile accedere a tutti i prodotti in essa contenuti. Selezione prodotti Cliccandosul pulsante nella quale è possibile: Controllare il contenuto del carrello Modificare le quantità Cancellare un prodotto dal carrello Gestione prodotti l utente potrà accedere allagestione del carrello, Per ogni prodotto sono specificate le caratteristiche principali. E possibile aggiungere un prodotto al carrello cliccando sul tasto oppure scrivere il numero di quantità nell apposito box 69 70 Cliccandosul pulsante carrello. si procede con l acquisto dei prodotti selezionati nel In tale procedura interverrà la connessione sicura, pertanto verrà visualizzato una finestra di avvertimento per l utente Acquisto prodotti - L utente compilerà il preventivo in ogni sua parte ed in particolare inserirà il proprio numero di carta di credito in modo sicuro. Compilazione preventivo La procedura di acquisto avviene in due fasi: - L utente riceverà nel browser una copia del preventivo da stamp are e conservare. Infine l utente è tenuto ad effettuare il logout e a ritornare nella pagina principale 71 72

Gestione dei preventivi Il sito in dettaglio La gestione dei preventivi è affidata all operatore di sistema. Esso può: Controllare il contenuto del preventivo Stampare il preventivo Convalidare il preventivo Anche in questa fase è necessaria la connessione sicura poiché vengono manipolati i numeri di carta di credito, pertanto l operatore dovrà loggarsi usando come login sysop e password quella scelta durante la fase di registrazione. 73 74 Euro Store: accesso al sito Euro Store: schema principale Schema generale Il sito è suddiviso in due aree principali: vetrina.html index.html login.cgi insert.cgi 1. Area ad accesso libero: aperto a tutti. contact.html carrello.cgi 2. Area ad accesso riservato: solo per i clienti registrati. info.html links.html register.cgi prevent.cgi vetrina2.html acquista.cgi listino.html logout.cgi listino.cgi ACCESSO LIBERO ACCESSO RISERVATO ACCESSO CURO SSL 75 76 Euro Store: le pagine ad accesso libero Euro Store: script per la registazione Offerte speciali e ultimi arrivi vetrina.html contact.html info.html links.html index.html register.cgi La Home Page Form per la registrazione di un nuovo cliente register.cgi Script PERL-CGI per la registrazione di un nuovo cliente. START RICEZIONE FORM CON DATI ANAGRAFICI IL MODULO E CORRETTO? LA USERID E UNIVOCA? ERRORE DI COMPILAZIONE USERID GIA ESTENTE Form per la scelta del listino prezzi diviso per categoria listino.html listino.cgi Lettura del listino prescelto dalla pagina listino.html Le pagine dell area ad accesso libero END REGISTRAZIONE IN LA PASSWORD SCELTA PWD ARCHIVIO CLIENTI E VALIDA? ERRATA Le pagine dell area ad accesso libero 77 78

Euro Store: l archivio clienti - 1 Euro Store: l archivio clienti - 2 ARCHIVIO CLIENTI Come implementiamo l archivio dei clienti? ARCHIVIO CLIENTI Come implementiamo l archivio dei clienti? Attraverso una struttura dati molto usata nel linguaggio Perl: Array : Indice HASH: Chiave HASH SU FILE Valore Il valore di ogni elemento di un array è indicizzato da un intero positivo Valore Il valore di ogni elemento di un HASH è indicizzato da una chiave univoca, ad es. una stringa! 79 HASH: Chiave ARCHIVIO : UserID Chiave dell Hash 80 Valore Dati_Cliente Valore corrispondente: i dati del cliente registrato associato alla sua UserID Lettura di un record: $dati = $archivio{$userid} Scrittura di un record: $archivio{$userid} = $dati Euro Store: l archivio clienti - 3 Euro Store: l archivio clienti - 4 ARCHIVIO CLIENTI Scrittura: $archivio{$userid} = $dati ARCHIVIO CLIENTI Lettura : $dati = $archivio{$userid} $userid = Stringa chiave con UserID di un utente. $dati = Stringa record: tutti i campi del modulo concatenato con opportuno separatore (#) + Password criptata. nome#cognome#indirizzo#telefono# #email#passcrypt Costruzione di $dati : $dati = join #, ($nome, $cognome,, $passcrypt); Concatenazione dei campi del modulo in un unica stringa 81 Dopo aver memorizzato i dati anagrafici di un utente, come accediamo ad essi? Legge i campi del record Sia $userid l identificativo di un utente: concatenati col separatore # $dati = $archivio{$userid}; ($nome, $cognome,, $passcrypt)= split /#/, $dati; Ritorna una lista di variabili (stringhe) usando i separatori. Ogni elemento è il valore di un campo del record. 82 Euro Store: l archivio clienti - 5 ARCHIVIO CLIENTI HASH o HASH SU FILE??? Euro Store: le pagine ad accesso riservato Home Page dell area riservata E possibile memorizzare un Hash in un File! tie (%archivio, SDBM_File, registro ); index.html login.cgi insert.cgi carrello.cgi Inserimento merce nel carrello Apre/Crea il file registro facendolo corrispondere all hash %archivio. Ogni operazione sull hash è un I/O sul file. prevent.cgi vetrina2.html acquista.cgi Gestione del carrello virtuale %ARCHIVIO REGISTRO.DIR REGISTRO.PAG logout.cgi Le pagine dell area ad accesso riservato Acquisto della merce con transazione sicura 83 84

Euro Store: richiesta di login Richiesta di login con login.cgi Euro Store: richiesta di inserimento - 1 Richiesta di inserimento di un prodotto con insert.cgi UTENTE WEB SERVER UTENTE WEB SERVER index.html Richiesta LOGIN (userid, password) login.cgi login.cgi Richiesta di una pagina riservata (es.: insert.cgi) Insert.cgi Output login.cgi Cookie (userid, data, ID_CARRELLO x) x Insert.cgi : ELENCO PRODOTTI SELEZIONABILI Richiesta Cookie Cookie (UserID, data, ID_CARRELLO x) Invio pagina richiesta x Le pagine dell area ad accesso riservato Le pagine dell area ad accesso riservato 85 86 Euro Store: richiesta di inserimento - 2 Richiesta di inserimento di un prodotto con insert.cgi Euro Store: richiesta di acquisto - 1 Richiesta di acquisto in modalità sicura con acquista.cgi UTENTE Insert.cgi : ELENCO PRODOTTI SELEZIONABILI Richiesta inserimento prodotto y nel carrello Richiesta Cookie Cookie (UserID, data, ID_CARRELLO x) WEB SERVER Insert.cgi x UTENTE login.cgi Acquista.cgi Richiesta di acquisto dei prodotti selezionati Richiesta Cookie Cookie (UserID, data, ID_CARRELLO x) Stampa PREVENTIVO (con contenuto di x) WEB SERVER Acquista.cgi x=y Insert.cgi Esito dell inserimento Le pagine dell area ad accesso riservato INSERIMENTO PRODOTTO y IN CARRELLO x Tutto ciò avviene in connessione sicura! Le pagine dell area ad accesso riservato 87 88 Euro Store: richiesta di acquisto - 2 Euro Store: richiesta di acquisto - 3 Transazione sicura con acquista.cgi Richiesta di logout dopo l acquisto, con logout.cgi UTENTE WEB SERVER UTENTE WEB SERVER Acquista.cgi INVIO DATI CARTA DI CERDITO Richiesta Cookie Acquista.cgi Acquista.cgi RICHIESTA DI LOGOUT Richiesta Cookie Logout.cgi Cookie (UserID, data, ID_CARRELLO x) x=y Cookie (UserID, data, ID_CARRELLO x) x=y Acquista.cgi Copia Preventivo generato REGISTRA PREVENTIVO NEL SERVER per carrello X Index.html Cancellazione del Cookie x=y Le pagine dell area ad accesso riservato Le pagine dell area ad accesso riservato 89 90

Euro Store: script per la login Euro Store: il carrello virtuale - 1 START LETTURA DEL (UserID, DATA, ID x) DEFINITO? LETTURA PARAMETRI USERID e PASSW LETTURA ARCHIVIO CLIENTI login.cgi USERID e PASSW VALIDI? ARCHIVIO CLIENTI CARRELLO VIRTUALE = HASH SU FILE =? Carrello: UserID Creiamo un unico file come archivio di carrelli, e quindi un HASH SU FILE! Prodotti inseriti LETTURA CARRELLO x CREAZIONE CARRELLO x CREAZIONE E INVIO (UserID, DATA, ID x) Hash Chiave Valore STAMPA MENU CATEGORIE PRODOTTI END ERRORE Ma cos è l oggetto Prodotti inseriti? 91 92 ARCHIVIO CARRELLI Euro Store: il carrello virtuale - 2 = HASH SU FILE Carrello: UserID Prodotti inseriti START LETTURA PARAMETRI E (UserID, DATA, ID x) Euro Store: script per l inserimento insert.cgi %carrello $userid $contenuto $contenuto := Stringa, contentente: ID Carrello + Coppie (codice, quantità) per ogni prodotto. ID x = 1234 Array di coppie (codice_prodotto, quantità) DEFINITO? ERRORE ESTE CATEGORIA=y? ESTE INSERT? LETTURA PRODOTTI CATEGORIA y STAMPA PRODOTTI CON LINK AL CARRELLO x $contenuto = 1234#skaudio155%2#skvideo209%1# LEGGI COPPIE (CODICE,Q.TA ) DA PARAMETRI INSERISCI COPPIE NEL CARRELLO x END 93 94 Euro Store: l archivio prodotti - 1 Euro Store: l archivio prodotti - 2 ESTE INSERT? LEGGI COPPIE (CODICE,Q.TA ) DA PARAMETRI Se esiste il parametro INSERT, allora il suo valore è un array di coppie (Codice_Prodotto, Quantità). Vi è una coppia per ogni prodotto che l utente ha SELEZIONATO! ARCHIVIO DEI PRODOTTI ACC.TXT CAT. ACCESSORI 0 1 2 3 y PRO.TXT CAT. PROCESSORI Semplici files di testo (uno per ogni categoria) ESTE CATEGORIA=y? LETTURA PRODOTTI CATEGORIA y Come gestire l archivio dei prodotti diviso per categoria? Codice proip3800 proaxp20 Produttore Intel AMD Modello Pentium III Athlon XP Versione 800 Mhz 2.0 Ghz Prezzo Eur. 75.00 Eur. 190.00............... 95 96

START LETTURA PARAMETRI E (UserID, DATA, ID x) Euro Store: script per il carrello virtuale carrello.cgi: gestione del carrello virtuale START LETTURA PARAMETRI E (UserID, DATA, ID x) Euro Store: script per la transazione sicura Connessione sicura! acquista.cgi DEFINITO? ESTE INC = C o DEC = C? QUANTITA (C) += 1 oppure QUANTITA (C) -= 1 AGGIORNA Q.TA DI C NEL CARRELLO x DEFINITO? LETTURA ARCHIVIO DATI (USERID) LETTURA CARRELLO x LETTURA ARC.PRODOTTI ERRORE ESTE AGGIORNA? LEGGI COPPIE (CODICE,Q.TA ) DA PARAMETRI STAMPA TUTTO IL CARRELLO AGGIORNA COPPIE NEL CARRELLO x END ERRORE END END REGISTRAZIONE PREVENTIVO STAMPA MODULO PER LA COMPILAZIONE DELLA CC. GENERAZIONE PREVENTIVO STAMPA ANTEPRIMA PREVENTIVO ESTE CARTA_CREDITO? 97 98 REGISTRAZIONE PREVENTIVO Euro Store: l archivio preventivi - 1 Come vengono registrati i preventivi? Attraveso la consueta tecnica dell Hash su File! Chiave dell Hash: UserID dell acquirente. Valore: Contenuto del carrello + Informazioni sulla CC. Euro Store: l archivio preventivi - 2 Il file seriale.dat Ogni preventivo è generato con un numero di serie univoco. Il file seriale.dat è un contatore di numero seriale ed è aperto in lettura/scrittura esclusiva, in modo tale che due o più processi non acquisiscano lo stesso numero di serie. Soltanto l operatore di sistema può accedere ai preventivi memorizzati, attraverso lo script prevent.cgi. 99 100 Euro Store: interfaccia del sito Il file interfaccia.pm Tutti gli script del sito accedono a tale file per acquisire le definizioni degli oggetti utilizzati. Elenco delle librerie utilizzate. Timeout per la connessione all area riservata. Elenco categorie della merce. Nomi degli archivi generati. Dominio web nel quale installare il sito. Euro Store: sicurezza contro attacchi DoS Prevenzione da Attacchi di tipo Denial of Service Le Form nelle pagine html sono potenzialmente dannose in caso di attacchi DoS. Il file interfaccia.pm limita l uso del buffer di input per il web server che utilizziamo Nr. bytes massimo sul canale di ricezione. $CGI::POST_MAX=1024; $CGI::DISABLE_UPLOADS = 1; Upload di files disabilitati verso il web server. 101 102

Credits - 1 Credits - 2 Università degli Studi di Salerno Facoltà di Scienza MM. FF. NN. Corso di Laurea in Informatica, AA. 2001-2002 Progetto per il Corso di Sicurezza su Reti APACHE-SSL: Realizzazione di un sito con transazioni sicure Docente del corso Alfredo De Santis http://www.dia.unisa.it/ads.dir/index.html Università degli Studi di Salerno Facoltà di Scienza MM. FF. NN. Corso di Laurea in Informatica, AA. 2001-2002 Autori del Progetto Andrea Del Papa (56/100859) andreapap@libero.it Antonio Esposito (56/100984) ant100984@libero.it Cristian Gagliardi (56/100451) cristiangag@tiscali.it Gerardo Morrongiello (56/100473) morrongiello@virgilio.it Luigi Calaselice (56/100983) luical@libero.it 103 104 Credits - 3 Goodbye! 105