Nota :Questo articolo presuppone che tu abbia installato e configurato MySQL® sul tuo server.
Abilita SSL per MySQL
Prima di installare il certificato SSL sul database MySQL, eseguire il backup e rimuovere i file del certificato predefinito. È possibile scegliere il nome della propria directory per questo passaggio. Questo esempio utilizza mysql-backup-certs directory. Per eseguire i seguenti passaggi, passa all'utente root.
-
Crea una nuova directory di backup:
mkdir -p ~/mysql-backup-certs/
-
Vai a /var/lib/mysql directory e sposta tutti i certificati predefiniti nella directory di backup appena creata:
cd /var/lib/mysql mv ca.pem ca-key.pem ~/mysql-backup-certs/ mv server-key.pem server-cert.pem ~/mysql-backup-certs/ mv client-key.pem client-cert.pem ~/mysql-backup-certs/ mv private_key.pem public_key.pem ~/mysql-backup-certs/
-
Riavvia MySQL eseguendo uno dei seguenti comandi:
service mysqld restart
o
systemctl restart mysqld
-
Usa uno dei seguenti comandi per controllare
mysqld
stato:service mysqld status
o
systemctl status mysqld
-
Controlla lo stato SSL dall'interno della shell MySQL. Per fare ciò, accedi a MySQL come utente root:
mysql -u root -p (Enter MySQL root password)
-
Esegui la seguente query per verificare lo stato SSL in MySQL:
SHOW GLOBAL VARIABLES LIKE '%ssl%'; STATUS;
Nota :Non è necessario utilizzare lettere maiuscole. L'esempio li usa per differenziare la sintassi dei comandi da ciò che stai interrogando.
Nel comando precedente, vuoi vedere lo stato SSL come disabilitato e l'utente root è connesso senza SSL.
-
Per abilitare la connessione SSL con il nostro certificato modificando il my.cnf file, esegui uno dei seguenti comandi:
vim /etc/my.cnf
o
nano /etc/my.cnf
-
Trova [mysqld] sezione e aggiungi le seguenti impostazioni di configurazione:
# You will use your own SSL certificates directory for these. The following are examples only. ssl-ca=/etc/pki/tls/certs/ca.pem ssl-cert=/etc/pki/tls/certs/server-cert.pem ssl-key=/etc/pki/tls/private/server-key.pem
-
Salva ed esci dal file. Quindi, riavvia MySQL eseguendo uno dei seguenti comandi:
service mysqld restart
o
systemctl restart mysqld
-
Dopo aver eseguito il backup di MySQL, accedi nuovamente alla shell MySQL:
mysql -u root -p (Enter MySQL root password)
-
Esegui nuovamente la query SSL:
SHOW VARIABLES LIKE '%ssl%'; STATUS;
-
Se il valore della sezione SSL mostra sì , SSL è abilitato per MySQL. Tuttavia, vedi ancora che l'utente root non è connesso tramite SSL. E 'normale. Se desideri modificare questa impostazione, puoi forzare tutte le connessioni utente localhost a utilizzare SSL. Devi modificare my.cnf file di nuovo eseguendo uno dei seguenti comandi:
vim /etc/my.cnf
o
nano /etc/my.cnf
-
Immettere la seguente configurazione alla fine:
[client] ssl-ca=/etc/pki/tls/certs/ca.pem ssl-cert=/etc/pki/tls/certs/client-cert.pem ssl-key=/etc/pki/tls/private/client-key.pem
-
Riavvia MySQL. Dopo aver eseguito il backup di MySQL, accedi nuovamente alla shell MySQL:
mysql -u root -p (Enter MySQL root password)
-
Esegui nuovamente la seguente query:
SHOW VARIABLES LIKE '%ssl%'; STATUS;
Se vuoi solo abilitare le connessioni SSL dalle connessioni localhost, allora hai finito. Tuttavia, se vuoi abilitare anche gli accessi remoti per MySQL, continua a leggere.
Abilita Ccnnections remote per MySQL
Le seguenti istruzioni abilitano le connessioni remote per MySQL. Inoltre, questi utenti remoti devono disporre di file di certificato firmati dall'autorità di certificazione (CA) per connettersi.
Questo esempio indica (usando tre asterischi:***
) l'impostazione per forzare la firma della CA se si desidera consentire connessioni remote senza la CA.
-
Usa il tuo editor di testo da riga di comando preferito per modificare /etc/my.cnf file di nuovo:
vim /etc/my.cnf
o
nano /etc/my.cnf
-
Includi quanto segue nella parte inferiore di [mysqld] sezione:
bind-address = * require_secure_transport = ON ***
-
Salva ed esci dal file usando
:wq
. -
Riavvia MySQL. Conferma che MySQL è di nuovo in esecuzione. Devi accedere di nuovo alla shell MySQL.
-
Dopo aver effettuato l'accesso, crea l'utente eseguendo uno dei seguenti comandi:
CREATE USER 'example'@'%' IDENTIFIED BY 'password';
o
CREATE USER 'example'@'%' IDENTIFIED BY 'password' REQUIRE X509; ***
-
Dopo aver concesso a questo utente i permessi ai database per i quali vuoi che dispongano dei permessi, svuota i privilegi per aggiornare i permessi MySQL dalla shell:
flush privileges;
Potresti aver notato che il %
situato dopo il @
simbolo nel precedentecreate user
comando è ciò che in realtà denota l'utente come utente remoto.
Come bonus, se hai un utente che accede a MySQL solo da un indirizzo IP statico, puoi inserire quell'indirizzo IP al posto del %
per consentire a quell'utente di accedere a MySQL dal proprio indirizzo IP specifico. Tuttavia, si noti che l'utente può accedere al database solo da quell'indirizzo IP. Se il loro indirizzo IP cambia, non hanno più accesso. Ecco perché la maggior parte degli amministratori utilizza l'impostazione remota generale di %
invece.
Ora hai abilitato le connessioni SSL e l'accesso remoto al tuo database MySQL.