Met MySQL kunnen gebruikers veilig verbinding maken met databases met behulp van SSL/TLS-certificaten. In dit artikel zullen we kijken naar MySQL SSL-configuratie - hoe SSL/TLS voor MySQL in Ubuntu in te schakelen.
SSL/TLS inschakelen voor MySQL
Hier zijn de stappen om SSL-verbindingen in MySQL in te stellen.
1. Installeer MySQL
Open terminal en voer de volgende opdrachten uit om MySQL te installeren.
$ sudo apt-get update $ sudo apt-get install mysql-client
Bonus lezen:MySQL-sortering van alle tabellen wijzigen
2. SSL-status controleren
Log in op MySQL als root
$ mysql -uroot -p
U wordt gevraagd om het root-wachtwoord. Voer na het inloggen de volgende opdracht in om de huidige SSL/TLS-status te vinden
mysql> SHOW VARIABLES LIKE '%ssl%'; +---------------+----------+ | Variable_name | Value | +---------------+----------+ | have_openssl | DISABLED | | have_ssl | DISABLED | | ssl_ca | | | ssl_capath | | | ssl_cert | | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | | +---------------+----------+
U zult zien dat have_openssl en have_ssl beide hebben een UITGESCHAKELD waarde. Dit betekent dat SSL niet is ingeschakeld in MySQL.
Bonus lezen:Top databaseblogs om te volgen
3. Genereer SSL/TLS-certificaten
Vervolgens moeten we SSL/TLS-certificaten genereren en de MySQL-server naar hun locaties verwijzen. Gewoonlijk gebruiken mensen openssl om SSL-certificaten te genereren en deze vervolgens te verplaatsen naar /var/lib/mysql, de standaardlocatie van SSL-bestanden voor de MySQL-server.
MySQL 5.7 en latere versies worden echter al geleverd met een hulpprogramma mysql_ssl_rsa_setup om dit proces te vereenvoudigen. Het genereert SSL-certificaten en slaat ze op in /var/lib/mysql.
Omdat we het mysql-proces nodig hebben om deze bestanden te kunnen lezen, maken we mysql als de eigenaar van deze bestanden, zoals hieronder weergegeven.
Voer de volgende opdracht uit om SSL-certificaten te genereren
$ sudo mysql_ssl_rsa_setup --uid=mysqlGenerating a 2048 bit RSA private key ...................................+++ .....+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key ......+++ .................................+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key ......................................................+++ .................................................................................+++
writing new private key to 'client-key.pem'
-----
U kunt de gegenereerde bestanden controleren door de volgende opdracht uit te voeren
$ ls -all /var/lib/mysql/*.pem
Je ziet zoiets als het volgende
256740 4 -rw-r--r-- 1 mysql mysql 1078 May 1 12:24 /var/lib/mysql/server-cert.pem 256735 4 -rw------- 1 mysql mysql 1675 May 1 12:24 /var/lib/mysqlsql/ca-key.pem 256739 4 -rw-r--r-- 1 mysql mysql 451 May 1 12:24 /var/lib/mysqlsql/public_key.pem 256741 4 -rw------- 1 mysql mysql 1689 May 1 12:24 /var/lib/mysqlsql/client-key.pem 256737 4 -rw-r--r-- 1 mysql mysql 1064 May 1 12:24 /var/lib/mysqlsql/ca.pem 256743 4 -rw-r--r-- 1 mysql mysql 1048 May 1 12:24 /var/lib/mysqlsql/client-cert.pem 256736 4 -rw------- 1 mysql mysql 1625 May 1 12:24 /var/lib/mysqlsql/private_key.pem 256738 4 -rw------- 1 mysql mysql 1615 May 1 12:24 /var/lib/mysqlsql/server-key.pem
Dit zijn het SSL-certificaatbestand en de privésleutelparen voor de certificeringsinstantie, MySQL Server en MySQL-client.
Bonus Lezen:Top MySQL Workbench-alternatieven
4. SSL-verbindingen inschakelen in MySQL Server
Start vervolgens MySQL Server opnieuw om SSL/TLS in MySQL in te schakelen.
$ sudo systemctl restart mysql
MySQL Server zoekt bij het opstarten automatisch naar SSL-certificaatbestanden in /var/lib/mysql. U hoeft dus niet handmatig hun locatie op te geven in het MySQL-configuratiebestand.
Bonus Lezen:MySQL Query Cache inschakelen
5. SSL-verbinding verifiëren
Log in op MySQL zoals eerder (stap 2) en voer de volgende opdracht uit.
SHOW VARIABLES LIKE '%ssl%'; Output +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | ca.pem | | ssl_capath | | | ssl_cert | server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | server-key.pem | +---------------+-----------------+
Nu vind je have_openssl en have_ssl variabelen zijn JA. Je zult ook zien dat ssl_ca , ssl_cert en ssl_key zijn gevuld met de juiste waarden.
U kunt ook uw verbindingsgegevens controleren.
mysql>\s
--------------
. . .
SSL: Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection: 127.0.0.1 via TCP/IP
. . .
--------------
6. SSL configureren voor externe verbinding (optioneel)
Als uw MySQL-server externe inkomende verbindingen heeft, kunt u SSL inschakelen voor externe verbindingen en dit zelfs verplicht stellen door het configuratiebestand van de MySQL-server te wijzigen.
Open terminal en voer de volgende opdracht uit om de MySQL-configuratie te openen.
$ sudo vi /etc/mysql/my.cnf
Voeg [mysqld] codeblok toe zoals getoond, onder de twee !includedir statements.
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
# Require clients to connect either using SSL
# or through a local socket file
require_secure_transport = ON
bind-address = 0.0.0.0
In de laatste regel hebben we het bindadres ingesteld op 0.0.0.0 om externe verbindingen toe te staan. U hoeft het niet toe te voegen als u externe verbindingen al hebt ingeschakeld.
Start MySQL Server opnieuw om wijzigingen toe te passen. Vanaf nu vereist MySQL SSL.
Vergeet voor externe verbindingen niet om poort 443 te openen, in plaats van de standaard 3306. Dit komt omdat SSL-verbindingen plaatsvinden via poort 443 en niet via 3306.
Hopelijk helpt dit artikel je om de SSL/TLS-verbinding in MySQL in te schakelen.