Premessa
In questo documento spiegherò come realizzare un server Web dotato di connessioni sicure grazie al protocollo SSL abilitato all’eventuale uso di pagine php e database, grazie all’installazione sulla stessa macchina di MySQL come server database. Questo tipo di server così configurato è indispensabile se vogliamo crearci un sito web, interno alla LAN o no, con i portal manager come Phpnuke, E-Xoops, Zope/Plone e tanti altri che si basano sulla tecnologia Php/MySQL, oppure creare un forum di discussione con PhpBB o con altri software.
Risorse Hardware e Software
Per il mio scopo ho utilizzato un vecchio pc , composto da un processore Pentium 166MMX, 64MB di RAM, Hard Disk da 40GB ide, scheda di rete pci 3Com 905-b 10/100Mbit., dal lato software ho utilizzato Slackware 10, MySQL, Apache, Php, OpenSSL, Mod_SSL e Mod_Perl.
Procuriamoci i pacchetti necessari
Per facilitarvi nell’impresa vi ho messo a disposizione il mio spazio web, da dove potere prelevare i pacchetti necessari senza andare in giro per la rete magari non trovando le versioni utilizzate in questo documento. Di seguito trovate i link per scaricare i pacchetti:
http://www.webalice.it/alepensato/apache/mysql-4.0.21.tar.gz
http://www.webalice.it/alepensato/apache/openssl-0.9.7d.tar.gz
http://www.webalice.it/alepensato/apache/apache_1.3.27.tar.tar
http://www.webalice.it/alepensato/apache/php-5.0.2.tar.gz
http://www.webalice.it/alepensato/mod_ssl-2.8.14-1.3.27.tar.gz
http://www.webalice.it/alepensato/mod_perl-1.29.tar.gz
Compilazione e installazione dei software sorgenti (come root)
Installazione del server MySQL
Il primo software che installeremo è MySQL. Esso si preoccuperà di gestire i database che verranno usati e anche di consentirne l’accesso tramite il linguaggio di programmazione Php che è in stretta relazione col server database Per prima cosa occorre scompattare i sorgenti e solo dopo potremmo avviare la configurazione seguita dalla compilazione e l’installazione. Una volta completati queste prime fasi, installeremo il database principale che contiene le informazioni che consentono al server di funzionare, copieremo i file di configurazione nelle posizioni corrette e modificheremo il file rc.local per avviare il server MySQL al boot del sistema. Eseguite questi comandi passo passo:
cd /tar tar zxvf mysql* cd mysql* ./configure --prefix=/usr/local/mysql make && make install script/mysql_install_db cp support*/*medium.cnf /etc/my.cnf /usr/local/mysql/bin/mysqld_safe --user=root & vi /etc/rc.d/rc.local
Installazione del pacchetto OpenSSL
Questo pacchetto, una volta installato, si occuperà della gestione delle informazioni crittografate col protocollo si sicurezza SSL utilizzando algoritmi complessi per la crittografia dei dati ed un sistema di chiavi pubbliche e private necessarie per la decodifica dei dati. Eseguite questi comandi passo passo:
cd /tar tar zxvf openssl cd openssl* ./config && make && make install
Preconfigurazione di Apache
Apache è il software più utilizzato in internet per offrire la funzione di web server. Per il momento procediamo solo con la preconfigurazione, in quanto il software che dovremo installare successivamente (Php) richiede questo processo. Eseguite questi comandi passo passo:
cd /tar tar zxvf apache* cd apache* ./configure --prefix=/usr/local/apache --enable-module=all --enable-shared=max
Installazione di Php
Adesso che abbiamo preconfigurato il server web Apache, ci occuperemo dell’installazione di Php, che come detto prima è un potente linguaggio di programmazione simile all’Asp, potremmo dire che Php è una versione Unix-Like di Asp che è per sistemi Microsoft®. Tra i vantaggio troviamo che Php è stato progettato per lavorare a stretto contatto con MySQL proponendo alcuni tag specifici per la connessione ai database oppure per la registrazione delle informazioni immesse in una form nei campi del database, proprio quello che fa per noi per usare i portal manager. Eseguite questi comandi passo passo:
cd /tar tar zxvf php* cd php* ./configure --with-apache=../apache_1.3.27 --with-mysql=/usr/local/mysql \ --enable-track-vars --enable-ftp make && make install
Installazione di Mod_SSL
Questo è il pacchetto software che si occupa di abilitare Apache ad usare i servizi di crittografia offerti da OpenSSL. Con questo plug-in abiliteremo Apache ad effettuare delle connessioni protette, dove i dati che viaggiano tra server e utente saranno crittografati e decodificati tramite funzioni matematiche complesse. Questo tipo di connessioni vengono utilizzare in rete per esempio dalle banche che consentono ai loro clienti di controllare i loro investimenti e di effettuare operazioni, ma anche quando effettuiamo acquisti on line. In realtà nel caso delle banche non c’è solo il protocollo SSL che si preoccupa della sicurezza dei dati, ma entrano in gioco i certificati di protezione rilasciati da autorità accreditate e abilitate a questo scopo (CA Certification Authority). Spero di scrivere qualcosa su come funzionano le CA e di come realizzarne una a scopo dimostrativo o magari per usarla all’interno di una azienda. Adesso torniamo all’installazione del plug-in per Apache, eseguendo questi comandi:
cd /tar tar zxvf mod_ssl* cd mod_ssl*
./configure –with-apache=../apache_1.3.27 –prefix=/usr/local/apache \
--enable-module=all --enable-shared=max –with-openssl=../openssl-0.9.7d
Installazione di Mod_Perl
Questo è il pacchetto software che si occupa di abilitare Apache per usare script esterni che richiedono Perl per poter funzionare correttamente servizi. Adesso torniamo all’installazione del plug-in per Apache, eseguendo questi comandi:
cd /tar tar zxvf mod_perl* cd mod_ssl* perl Makefile.PL USE_EVERYTHING=1 \ APACHE_PREFIX=/usr/local/apache
A questo punto ci verrà chiesto se ../apache_1.3.27/src è la posizione corretta dove si trovano i sorgenti di Apache, quindi risponderemo digitando Y, mentre alla seconda domanda, in cui ci viene chiesto se volgiamo che Mod_Perl ci compili ed installi apache risponderemo digitando una N. Adesso possiamo completare manualmente l’installazione di Mod_Perl digitando come segue:
make && make install
Installazione di Apache
Questo pacchetto si occupa di rispondere alle chiamate tcp dirette al server, quindi indispensabile per il funzionamento del server stesso. Eseguite questi comandi passo passo:
./configure --prefix=/usr/local/apache --enable-module=all \ --enable-shared=max --enable-module=ssl --disable-module=auth_dbm \ --activate-module=src/modules/php5/libphp5.a \ --activate-module=src/modules/perl/libperl.a make && make certificate
Durante questa fase, verrà creato un certificato SSL associato alla nostra persona. Per tale operazione ci verranno chiesti alcuni dati e adesso vedremo come inserirli per ottenere il certificato.
Segnature Algorithm ((R)SA or (D)SA) [R]: R Country Name: IT State or Province Name: Sicilia Locality Name: Palermo Organizzation Name: porkyHTTP Network Organizzation Unit Name: porkyHTTP Network - CA Common Name: www.home.local Email Address: [email protected] Certificate Validity: 730 Certificate Version: 3 Encrypt the private key now: Y Enter PEM pass phrase: ****** Verifying - Enter PEM pass phrase: ******
Adesso che il certificate è stato creato possiamo completare l’installazione di Apache lanciando il comando
make install
Configurazione di Apache
Adesso che Apache è stato installato, dobbiamo procedere a fare una breve personalizzazione del file di configurazione, nel quale attiveremo il supporto per la lettura delle pagine PHP, inseriamo i dati riguardanti l’amministratore di Apache e qualche altra piccola aggiunta. Apriamo con un editor di testi come VI il file di configurazione httpd.conf, che si trova nella directory /usr/local/apache/conf, e procediamo a modificare le voci del conf, come nell’esempio di seguito
vi /usr/local/apache/conf/httpd.conf ServerName www.home.local ServerAdmin [email protected] DirectoryIndex index.html index.htm index.php index.php3 index.phps index.cgi default.html default.htm home.htm AddType application/x-httpd-php .php .php3 AddType application/x-httpd-php-source .phps
Queste riportate sopra sono le righe che dovremo aggiungere o modificare nel file httpd.conf. una volta eseguita questa operazione saremo pronti alla prima esecuzione di Apache. Abbiamo due alternative per l’avvio di Apache, con o senza il supporto SSL per le connessioni sicure. Per avviarlo col supporto SSL ci basterà lanciare il comando /usr/local/apache/bin/apachectl startssl e inserendo la password che abbiamo digitato al momento della generazione del certificato, Apache partirà e si metterà in ascolto si sulla prota 80 che 443. Se non volgiamo attivare tale supporto possiamo avviarlo col comando
/usr/local/apache/bin/apachectl start