I det här blogginlägget går vi igenom några av de viktiga aspekterna av att konfigurera och hantera SSL i MySQL-värd. Dessa skulle inkludera standardkonfigurationen, inaktivera SSL och aktivera och upprätthålla SSL på en MySQL-server. Våra observationer är baserade på communityversionen av MySQL 5.7.21.
Standard SSL-konfiguration i MySQL
Som standard installerar och aktiverar MySQL-servern alltid SSL-konfiguration. Det är dock inte påtvingat att klienter ansluter med SSL. Klienter kan välja att ansluta med eller utan SSL eftersom servern tillåter båda typerna av anslutningar. Låt oss se hur du verifierar detta standardbeteende för MySQL-servern.
När SSL är installerat och aktiverat på MySQL-servern som standard, ser vi vanligtvis följande:
- Närvaro av *.pem-filer i MySQL-datakatalogen. Dessa är de olika klient- och servercertifikat och nycklar som används för SSL enligt beskrivningen här.
- Det kommer att finnas en notering i mysqld-felloggfilen under serverstarten, till exempel:
- [Notera] Hittade ca.pem, server-cert.pem och server-key.pem i datakatalogen. Försöker aktivera SSL-stöd med hjälp av dem.
- Värdet på variabeln 'have_ssl' kommer att vara JA:
mysql> visa variabler som 'have_ssl';
+—————+——-+
| Variabelnamn | Värde |
+—————+——-+
| have_ssl | JA |
+—————+——-+
När det gäller MySQL-klienten försöker den som standard alltid välja krypterad nätverksanslutning med servern, och om det misslyckas återgår den till okrypterat läge.
Så, genom att ansluta till MySQL-servern med kommandot:
mysql -h
Vi kan kontrollera om den aktuella klientanslutningen är krypterad eller inte med hjälp av statuskommandot:
mysql> status
————–
mysql Ver 14.14 Distrib 5.7.21, för Linux (x86_64) med EditLine-omslag
Anslutnings-id: 75
Aktuell databas:
Nuvarande användare: [email protected]
SSL: Chiffer som används är DHE-RSA-AES256-SHA
Nuvarande personsökare: stdout
Använda outfile: ”
Använda avgränsare: ;
Serverversion: 5.7.21-log MySQL Community Server (GPL)
Protokollversion: 10
Anslutning: 127.0.0.1 via TCP/IP
………………………………..
SSL-fältet som är markerat ovan indikerar att anslutningen är krypterad. Vi kan dock be MySQL-klienten att ansluta utan SSL genom att använda kommandot:
mysql -h
mysql> status
————–
Anslutnings-id: 93
Aktuell databas:
Nuvarande användare: [email protected]
SSL: Används inte
Nuvarande personsökare: stdout
Använda outfile: ”
Använda avgränsare: ;
Serverversion: 5.7.21-log MySQL Community Server (GPL)
Protokollversion: 10
Anslutning: 127.0.0.1 via TCP/IP
……………………………
Vi kan se att även om SSL är aktiverat på servern så kan vi ansluta till den utan SSL.
MySQL Tutorial - Hur man konfigurerar och hanterar SSL på din #MySQL-serverKlicka för att tweeta
Inaktivera SSL i MySQL
Om ditt krav är att helt stänga av SSL på MySQL-servern istället för standardalternativet "aktiverat, men valfritt läge", kan vi göra följande:
- Ta bort *.pem-certifikatet och nyckelfilerna i MySQL-datakatalogen.
- Starta MySQL med SSL-alternativet avstängt. Detta kan göras genom att lägga till en radpost:
ssl=0 i filen my.cnf.
Vi kan observera att:
- Det kommer INTE att finnas några anteckningar i mysqld-loggar som :
- [Notera] Hittade ca.pem, server-cert.pem och server-key.pem i datakatalogen. Försöker aktivera SSL-stöd med dem.
- Värdet på variabeln 'have_ssl' kommer att inaktiveras:
mysql> visa variabler som 'have_ssl';
+—————+——-+
| Variabelnamn | Värde |
+—————+——-+
| have_ssl | INAKTIVERAD |
+—————+——-+
Tillämpa SSL i MySQL
Vi såg att även om SSL var aktiverat som standard på MySQL-servern, tillämpades det inte och vi kunde fortfarande ansluta utan SSL.
Nu, genom att ställa in systemvariabeln require_secure_transport, kommer vi att kunna genomdriva att servern endast accepterar SSL-anslutningar. Detta kan verifieras genom att försöka ansluta till MySQL-servern med kommandot:
mysql -h
Och vi kan se att anslutningen skulle nekas med följande felmeddelande från servern:
FEL 3159 (HY000):Anslutningar som använder osäker transport är förbjudna medan –require_secure_transport=ON.
SSL-överväganden för replikeringskanaler
Som standard, i en MySQL-replikeringsinställning, ansluter slavarna till mastern utan kryptering.
För att ansluta till en master på ett säkert sätt för replikeringstrafik måste därför slavar använda MASTER_SSL=1; som en del av "ÄNDRA MASTER TILL" kommando som anger parametrar för anslutning till mastern. Observera att det här alternativet också är obligatoriskt om din master är konfigurerad att genomdriva SSL-anslutning med require_secure_transport.