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

MySQL Tutorial – Konfiguration og administration af SSL på din MySQL-server

I dette blogindlæg gennemgår vi nogle af de vigtige aspekter ved konfiguration og styring af SSL i MySQL-hosting. Disse vil omfatte standardkonfigurationen, deaktivering af SSL og aktivering og håndhævelse af SSL på en MySQL-server. Vores observationer er baseret på fællesskabsversionen af ​​MySQL 5.7.21.

Standard SSL-konfiguration i MySQL

Som standard installerer og aktiverer MySQL-serveren altid SSL-konfiguration. Det er dog ikke håndhævet, at klienter forbinder ved hjælp af SSL. Klienter kan vælge at oprette forbindelse med eller uden SSL, da serveren tillader begge typer forbindelser. Lad os se, hvordan du verificerer denne standardadfærd for MySQL-serveren.

Når SSL er installeret og aktiveret på MySQL-serveren som standard, vil vi typisk se følgende:

  1. Tilstedeværelse af *.pem-filer i MySQL-datamappen. Disse er de forskellige klient- og servercertifikater og nøgler, der er i brug til SSL som beskrevet her.
  2. Der vil være en note i mysqld fejllogfilen under serverstarten, såsom:
    • [Bemærk] Fandt ca.pem, server-cert.pem og server-key.pem i databiblioteket. Forsøger at aktivere SSL-understøttelse ved hjælp af dem.
  3. Værdien af ​​'have_ssl'-variablen vil være JA:

mysql> vis variabler som 'have_ssl';

+—————+——-+

| Variabelnavn | Værdi |

+—————+——-+

| have_ssl      | JA |

+—————+——-+

Med hensyn til MySQL-klienten forsøger den som standard altid at gå efter krypteret netværksforbindelse med serveren, og hvis det mislykkes, falder den tilbage til ukrypteret tilstand.

Så ved at oprette forbindelse til MySQL-serveren ved hjælp af kommandoen:

mysql -h -u -p

Vi kan kontrollere, om den aktuelle klientforbindelse er krypteret eller ej ved hjælp af statuskommandoen:

mysql> status

————–

mysql  Ver 14.14 Distrib 5.7.21, til Linux (x86_64) ved hjælp af  EditLine-indpakning

Forbindelses-id:         75

Nuværende database:

Nuværende bruger:          [email protected]

SSL:                   Chiffer i brug er DHE-RSA-AES256-SHA

Nuværende personsøger:         stdout

Brug af outfile:         ”

Brug af skilletegn:       ;

Serverversion:        5.7.21-log MySQL Community Server (GPL)

Protokolversion:      10

Forbindelse:            127.0.0.1 via TCP/IP

………………………………..

SSL-feltet fremhævet ovenfor angiver, at forbindelsen er krypteret. Vi kan dog bede MySQL-klienten om at oprette forbindelse uden SSL ved at bruge kommandoen:

mysql -h -u  -p –ssl-mode=DEAKTIVERET

 mysql> status

————–

Forbindelses-id:         93

Nuværende database:

Nuværende bruger:          [email protected]

SSL:                   Ikke i brug

Nuværende personsøger:         stdout

Brug af outfile:         ”

Brug af skilletegn:       ;

Serverversion:        5.7.21-log MySQL Community Server (GPL)

Protokolversion:      10

Forbindelse:            127.0.0.1 via TCP/IP

…………………………………

Vi kan se, at selvom SSL er aktiveret på serveren, kan vi oprette forbindelse til den uden SSL.

MySQL Tutorial - Sådan konfigureres og administreres SSL på din #MySQL-serverKlik for at tweete

Deaktivering af SSL i MySQL

Hvis dit krav er helt at slå SSL fra på MySQL-serveren i stedet for standardindstillingen "aktiveret, men valgfri tilstand", kan vi gøre følgende:

  1.  Slet *.pem-certifikatet og nøglefilerne i MySQL-datamappen.
  2. Start MySQL med SSL-indstillingen slået fra. Dette kan gøres ved at tilføje en linjepost:

ssl=0   i my.cnf-filen.

 Vi kan se, at:

  1. Der vil IKKE være nogen note i mysqld-logfiler såsom:
    • [Bemærk] Fandt ca.pem, server-cert.pem og server-key.pem i databiblioteket. Forsøger at aktivere SSL-understøttelse ved at bruge dem.
  2.  Værdien af ​​'have_ssl'-variablen vil være DEAKTIVERET:

mysql> vis variabler som 'have_ssl';

+—————+——-+

| Variabelnavn | Værdi |

+—————+——-+

| have_ssl      | DEAKTIVERET |

+—————+——-+

Håndhævelse af SSL i MySQL

Vi så, at selvom SSL var aktiveret som standard på MySQL-serveren, blev det ikke håndhævet, og vi var stadig i stand til at oprette forbindelse uden SSL.

Nu, ved at indstille systemvariablen require_secure_transport, vil vi være i stand til at håndhæve, at serveren kun accepterer SSL-forbindelser. Dette kan bekræftes ved at prøve at oprette forbindelse til MySQL-serveren med kommandoen:

mysql -h -u sgroot -p –ssl-mode=DEAKTIVERET

Og vi kan se, at forbindelsen ville blive afvist med følgende fejlmeddelelse fra serveren:

FEJL 3159 (HY000):Forbindelser, der bruger usikker transport, er forbudt, mens –require_secure_transport=ON.

SSL-overvejelser for replikeringskanaler

Slaverne forbinder som standard i en MySQL-replikeringsopsætning til masteren uden kryptering.

For at oprette forbindelse til en master på en sikker måde til replikeringstrafik skal slaver derfor bruge MASTER_SSL=1; som en del af 'SKIFT MASTER TIL' kommando som specificerer parametre for tilslutning til masteren. Bemærk venligst, at denne mulighed også er obligatorisk, hvis din master er konfigureret til at gennemtvinge SSL-forbindelse ved hjælp af require_secure_transport.


  1. Lagring af UTF-16/Unicode-data i SQL Server

  2. Sådan tilføjes Meridiem-indikatoren (AM/PM) til en tidsværdi i Oracle

  3. Opret et Excel-regneark fra en Oracle-database

  4. Sådan bruges Distributed AD til at reducere patchingstiden i Oracle EBS