sql >> Databasteknik >  >> RDS >> Mysql

Hur man aktiverar SSL/TLS för MySQL i Ubuntu

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=mysql

Generating 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.

  1. SQL-uppdatering med row_number()

  2. Är det möjligt att GROUP BY flera kolumner med MySQL?

  3. Hur man använder kommandot Compact and Repair i Access

  4. Det aktuella tillståndet för Open Source Backup Management för PostgreSQL