Mysql
 sql >> Database >  >> RDS >> Mysql

Tutorial MySQL – Configurazione e gestione di SSL sul tuo server MySQL

In questo post del blog, esaminiamo alcuni degli aspetti importanti della configurazione e della gestione di SSL nell'hosting MySQL. Questi includerebbero la configurazione predefinita, la disabilitazione di SSL e l'abilitazione e l'applicazione di SSL su un server MySQL. Le nostre osservazioni si basano sulla versione community di MySQL 5.7.21.

Configurazione SSL predefinita in MySQL

Per impostazione predefinita, il server MySQL installa e abilita sempre la configurazione SSL. Tuttavia, non è imposto che i client si connettano utilizzando SSL. I client possono scegliere di connettersi con o senza SSL poiché il server consente entrambi i tipi di connessione. Vediamo come verificare questo comportamento predefinito del server MySQL.

Quando SSL è installato e abilitato per impostazione predefinita sul server MySQL, in genere vedremo quanto segue:

  1. Presenza di file *.pem nella directory dei dati MySQL. Questi sono i vari certificati e chiavi client e server utilizzati per SSL come descritto qui.
  2. Ci sarà una nota nel file di log degli errori mysqld durante l'avvio del server, come ad esempio:
    • [Nota] Trovato ca.pem, server-cert.pem e server-key.pem nella directory dei dati. Tentativo di abilitare il supporto SSL utilizzandoli.
  3. Il valore della variabile 'have_ssl' sarà YES:

mysql> mostra variabili come 'have_ssl';

+—————+——-+

| nome_variabile | Valore |

+—————+——-+

| have_ssl      | SI |

+—————+——-+

Rispetto al client MySQL, per impostazione predefinita, tenta sempre di eseguire una connessione di rete crittografata con il server e, se ciò non riesce, torna alla modalità non crittografata.

Quindi, connettendoti al server MySQL usando il comando:

mysql -h -u -p

Possiamo verificare se la connessione client corrente è crittografata o meno utilizzando il comando di stato:

stato mysql>

————–

mysql  Ver 14.14 Distrib 5.7.21, per Linux (x86_64) utilizzando  Wrapper EditLine

ID connessione:         75

Database corrente:

Utente attuale:         [email protected]

SSL:                   La cifra in uso è DHE-RSA-AES256-SHA

Cercapersone attuale:         stdout

Utilizzo di outfile:         "

Utilizzo del delimitatore:       ;

Versione server:        5.7.21-log MySQL Community Server (GPL)

Versione del protocollo:      10

Connessione:            127.0.0.1 tramite TCP/IP

…………………………..

Il campo SSL evidenziato sopra indica che la connessione è crittografata. Possiamo, tuttavia, chiedere al client MySQL di connettersi senza SSL utilizzando il comando:

mysql -h -u  -p –ssl-mode=DISABILITATO

 stato di mysql>

————–

ID connessione:         93

Database corrente:

Utente attuale:          [email protected]

SSL:                   Non utilizzato

Cercapersone attuale:         stdout

Utilizzo di outfile:         "

Utilizzo del delimitatore:       ;

Versione server:        5.7.21-log MySQL Community Server (GPL)

Versione del protocollo:      10

Connessione:            127.0.0.1 tramite TCP/IP

……………………………

Possiamo vedere che anche se SSL è abilitato sul server, siamo in grado di connetterci ad esso senza SSL.

Tutorial MySQL - Come configurare e gestire SSL sul tuo server #MySQLFai clic per twittare

Disabilitazione SSL in MySQL

Se il tuo requisito è disattivare completamente SSL sul server MySQL invece dell'opzione predefinita di "modalità abilitata, ma opzionale", possiamo fare quanto segue:

  1.  Elimina il certificato *.pem e i file chiave nella directory dei dati MySQL.
  2. Avvia MySQL con l'opzione SSL disattivata. Questo può essere fatto aggiungendo una voce di riga:

ssl=0   nel file my.cnf.

 Possiamo osservare che:

  1. NON ci saranno note nei log di MySQL come :
    • [Nota] Trovato ca.pem, server-cert.pem e server-key.pem nella directory dei dati. Tentativo di abilitare il supporto SSL utilizzandoli.
  2.  Il valore della variabile "have_ssl" sarà DISATTIVATO:

mysql> mostra variabili come 'have_ssl';

+—————+——-+

| nome_variabile | Valore |

+—————+——-+

| have_ssl      | DISABILITATO |

+—————+——-+

Applica SSL in MySQL

Abbiamo visto che, sebbene SSL fosse abilitato per impostazione predefinita sul server MySQL, non veniva applicato e siamo comunque in grado di connetterci senza SSL.

Ora, impostando la variabile di sistema require_secure_transport, saremo in grado di imporre che il server accetterà solo connessioni SSL. Questo può essere verificato provando a connettersi al server MySQL con il comando:

mysql -h -u sgroot -p –ssl-mode=DISABLED

E possiamo vedere che la connessione verrebbe rifiutata con il seguente messaggio di errore dal server:

ERRORE 3159 (HY000):le connessioni che utilizzano un trasporto non sicuro sono vietate mentre –require_secure_transport=ON.

Considerazioni SSL per i canali di replica

Per impostazione predefinita, in una configurazione di replica MySQL, gli slave si connettono al master senza crittografia.

Quindi per connettersi a un master in modo sicuro per il traffico di replica, gli slave devono utilizzare MASTER_SSL=1; nell'ambito del "CHANGE MASTER TO" comando che specifica i parametri per la connessione al master. Tieni presente che questa opzione è obbligatoria anche nel caso in cui il tuo master sia configurato per imporre la connessione SSL utilizzando require_secure_transport.