MySQL giver brugerne mulighed for sikker forbindelse til databaser ved hjælp af SSL/TLS-certifikater. I denne artikel vil vi se på MySQL SSL-konfiguration – hvordan man aktiverer SSL/TLS til MySQL i Ubuntu.
Sådan aktiverer du SSL/TLS til MySQL
Her er trinene til opsætning af SSL-forbindelser i MySQL.
1. Installer MySQL
Åbn terminal og kør følgende kommandoer for at installere MySQL.
$ sudo apt-get update $ sudo apt-get install mysql-client
Bonuslæser:MySQL-ændringssamling af alle tabeller
2. Tjek SSL-status
Log ind på MySQL som root
$ mysql -uroot -p
Du bliver bedt om root-adgangskode. Når du er logget ind, skal du indtaste følgende kommando for at finde den nuværende SSL/TLS-status
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 | | +---------------+----------+
Du vil opdage, at have_openssl og have_ssl begge har DISABLED værdi. Det betyder, at SSL ikke er aktiveret i MySQL.
Bonuslæsning:Topdatabaseblogs at følge
3. Generer SSL/TLS-certifikater
Dernæst skal vi generere SSL/TLS-certifikater og pege MySQL-serveren til deres placeringer. Typisk bruger folk openssl til at generere SSL-certifikater og derefter flytte dem til /var/lib/mysql, som er standardplaceringen af SSL-filer til MySQL-serveren.
Men MySQL 5.7 og nyere versioner leveres allerede med et hjælpeprogram mysql_ssl_rsa_setup for at forenkle denne proces. Den genererer SSL-certifikater og gemmer dem på /var/lib/mysql.
Da vi har brug for mysql-processen for at kunne læse disse filer, vil vi lave mysql som ejer af disse filer, som vist nedenfor.
Kør følgende kommando for at generere SSL-certifikater
$ 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'
-----
Du kan kontrollere de genererede filer ved at køre følgende kommando
$ ls -all /var/lib/mysql/*.pem
Du vil se noget i stil med følgende
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
Disse er SSL-certifikatfilen og private nøglepar til certifikatautoritet, MySQL-server og MySQL-klient.
Bonus Læs:Top MySQL Workbench Alternativer
4. Aktiver SSL-forbindelser i MySQL Server
Genstart derefter MySQL Server for at aktivere SSL/TLS i MySQL.
$ sudo systemctl restart mysql
MySQL Server vil automatisk lede efter SSL-certifikatfiler i /var/lib/mysql, når den starter. Så du behøver ikke manuelt at angive deres placering i MySQL-konfigurationsfilen.
Bonus Læs:Sådan aktiveres MySQL Query Cache
5. Bekræft SSL-forbindelse
Log ind på MySQL som før (trin 2), og kør følgende kommando.
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 vil du finde have_openssl og have_ssl variabler er JA. Du vil også se, at ssl_ca , ssl_cert og ssl_key er udfyldt med passende værdier.
Du kan også tjekke dine forbindelsesdetaljer.
mysql>\s
--------------
. . .
SSL: Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection: 127.0.0.1 via TCP/IP
. . .
--------------
6. Konfigurer SSL til fjernforbindelse (valgfrit)
Hvis din MySQL-server har eksterne indgående forbindelser, så kan du aktivere SSL for fjernforbindelse og endda gøre det obligatorisk ved at ændre MySQL-serverens konfigurationsfil.
Åbn terminal og kør følgende kommando for at åbne MySQL-konfiguration.
$ sudo vi /etc/mysql/my.cnf
Tilføj [mysqld] kodeblok som vist under de to !includedir-sætninger.
!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
I den sidste linje har vi sat bind-adresse til 0.0.0.0 for at tillade fjernforbindelser. Du behøver ikke tilføje det, hvis du allerede har aktiveret fjernforbindelser.
Genstart MySQL Server for at anvende ændringer. Fra nu af vil MySQL kræve SSL.
For fjernforbindelser, glem ikke at åbne port 443 i stedet for standard 3306. Dette skyldes, at SSL-forbindelser sker over port 443 og ikke 3306.
Forhåbentlig hjælper denne artikel dig med at aktivere SSL/TLS-forbindelse i MySQL.