sql >> Database teknologi >  >> RDS >> Mysql

Sådan aktiverer du SSL/TLS til MySQL i Ubuntu

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

  1. Installation af postgresql med NSIS

  2. Sådan formateres tal i PostgreSQL

  3. Fejl ved brug af en OLAP-forbindelse:MSOLAP-udbyderen er ikke registreret på den lokale maskine...

  4. Hvordan sletter man duplikerede poster?