

Il server database MySQL è estremamente flessibile e potente, quando viene utilizzato sullo stesso computer con il server web Apache i dati che si scambiano risiedono sulla stessa macchina e solitamente non sono attaccabili, mentre se poniamo il caso avessi un server con Apache nel quale girano delle pagine in PHP che aprono delle connessioni a database MySQL su altri server, in questo caso la sicurezza dei dati è importante e per questo il nostro server database può anche essere configurato per funzionare su connessioni sicure tramite SSL che consente di crittografare il flusso dei dati secondo vari protocolli di crittografazione, che non sto qui ad elencare.
La parte più importante è configurare la compilazione del pacchetto MySQL con l’opzione –with-openssl, nel caso non vogliate compilarlo manualmente le maggiori distribuzioni tra cui Ubuntu hanno questa opzione abilitata, per cui può tranquillamente essere configurato come vedremo fra poco.
[caption id="attachment_26622" align="aligncenter" width="300" caption="Creazione certificato Linux Mint"]

[/caption]
La cosa da fare per abilitare le connessioni protette è creare con OpenSSL delle coppie di chiavi pubblica-privata; da shell eseguiamo i comandi per creare un certificato rsa:
openssl genrsa 2048 > ca-key.pem
openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
Tramite questi 2 comandi abbiamo creato una Autorità di certificazione che ci consente di autofirmare le chiavi, normalmente per situazioni reali si deve acquistare un certificato. Ora creiamo la chiave pubblica che andrà sul server:
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem
openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
A seguire quella privata dei client:
openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
Queste chiavi hanno la durata di 1000 giorni; ora basta copiarle in qualche cartella del server e del client e farlo sapere a MySQL tramite il suo file di configurazione my.cnf :
[client]
ssl-ca=…/cacert.pem
ssl-cert=…/client-cert.pem
ssl-key=…/client-key.pem
Ora configuriamo il demone:
[mysqld]
ssl-ca=…/cacert.pem
ssl-cert=…/server-cert.pem
ssl-key=…/server-key.pem
Ora il gioco è fatto e possiamo connetterci tramite la funzione mysql_connect in modo sicuro tramite SSL.
Per qualsiasi informazione potete andare sul sito di MySQL e vedere le connessioni sicure, mentre per farmi delle domande andate sul mio forum nella sezione dedicata ai database.…
Continua a leggere…
Copyright @ Mondo Informatico
E’ possibile ripubblicare il feed solo se ne viene citata la fonte.