MySQL tillåter användare att säkert ansluta till databaser med hjälp av SSL/TLS-certifikat. I den här artikeln kommer vi att titta på MySQL SSL Configuration – hur man aktiverar SSL/TLS för MySQL i Ubuntu.
Hur man aktiverar SSL/TLS för MySQL
Här är stegen för att ställa in SSL-anslutningar i MySQL.
1. Installera MySQL
Öppna terminalen och kör följande kommandon för att installera MySQL.
$ sudo apt-get update $ sudo apt-get install mysql-client
Bonus Läs:MySQL Ändra samling av alla tabeller
2. Kontrollera SSL-status
Logga in på MySQL som root
$ mysql -uroot -p
Du kommer att bli ombedd att ange root-lösenord. När du har loggat in anger du följande kommando för att hitta aktuell 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 kommer att upptäcka att have_openssl och have_ssl båda har DISABLED-värdet. Det betyder att SSL inte är aktiverat i MySQL.
Bonusläsning:Bästa databasbloggar att följa
3. Generera SSL/TLS-certifikat
Därefter måste vi generera SSL/TLS-certifikat och peka MySQL-servern till deras platser. Vanligtvis använder folk openssl för att generera SSL-certifikat och flyttar dem sedan till /var/lib/mysql som är standardplatsen för SSL-filer för MySQL-servern.
Men MySQL 5.7 och senare versioner levereras redan med ett verktyg mysql_ssl_rsa_setup för att förenkla denna process. Den genererar SSL-certifikat och lagrar dem på /var/lib/mysql.
Eftersom vi behöver mysql-processen för att kunna läsa dessa filer kommer vi att göra mysql som ägare till dessa filer, som visas nedan.
Kör följande kommando för att generera SSL-certifikat
$ 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 kontrollera de genererade filerna genom att köra följande kommando
$ ls -all /var/lib/mysql/*.pem
Du kommer att se något i stil med följande
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
Dessa är SSL-certifikatfilen och privata nyckelpar för certifikatutfärdare, MySQL Server och MySQL-klient.
Bonus Läs:Top MySQL Workbench Alternativen
4. Aktivera SSL-anslutningar i MySQL Server
Starta sedan om MySQL Server för att aktivera SSL/TLS i MySQL.
$ sudo systemctl restart mysql
MySQL Server kommer automatiskt att leta efter SSL-certifikatfiler i /var/lib/mysql när den startar. Så du behöver inte ange deras plats manuellt i MySQL-konfigurationsfilen.
Bonus Läs:Hur man aktiverar MySQL Query Cache
5. Verifiera SSL-anslutning
Logga in på MySQL som tidigare (steg 2) och kör följande 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 hittar du have_openssl och have_ssl variabler är JA. Du kommer också att se att ssl_ca , ssl_cert och ssl_key är fyllda med lämpliga värden.
Du kan också kontrollera din anslutningsinformation.
mysql>\s
--------------
. . .
SSL: Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection: 127.0.0.1 via TCP/IP
. . .
--------------
6. Konfigurera SSL för fjärranslutning (valfritt)
Om din MySQL-server har fjärranslutna inkommande anslutningar kan du aktivera SSL för fjärranslutning och till och med göra det obligatoriskt genom att ändra MySQL-serverns konfigurationsfil.
Öppna terminalen och kör följande kommando för att öppna MySQL-konfigurationen.
$ sudo vi /etc/mysql/my.cnf
Lägg till [mysqld] kodblock som visas under de två !includedir-satserna.
!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
På den sista raden har vi satt bind-adress till 0.0.0.0 för att tillåta fjärranslutningar. Du behöver inte lägga till det om du redan har aktiverat fjärranslutningar.
Starta om MySQL Server för att tillämpa ändringar. Från och med nu kommer MySQL att kräva SSL.
För fjärranslutningar, glöm inte att öppna port 443 istället för standard 3306. Detta beror på att SSL-anslutningar sker över port 443 och inte 3306.
Förhoppningsvis hjälper den här artikeln dig att aktivera SSL/TLS-anslutning i MySQL.