sql >> Database >  >> RDS >> Mysql

MySQL-zelfstudie - SSL configureren en beheren op uw MySQL-server

In deze blogpost bespreken we enkele van de belangrijke aspecten van het configureren en beheren van SSL in MySQL-hosting. Deze omvatten de standaardconfiguratie, het uitschakelen van SSL en het inschakelen en afdwingen van SSL op een MySQL-server. Onze observaties zijn gebaseerd op de communityversie van MySQL 5.7.21.

Standaard SSL-configuratie in MySQL

Standaard installeert de MySQL-server altijd SSL-configuratie en schakelt deze in. Het wordt echter niet afgedwongen dat clients verbinding maken via SSL. Klanten kunnen ervoor kiezen om verbinding te maken met of zonder SSL, aangezien de server beide soorten verbindingen toestaat. Laten we eens kijken hoe we dit standaardgedrag van de MySQL-server kunnen verifiëren.

Als SSL standaard is geïnstalleerd en ingeschakeld op de MySQL-server, zien we meestal het volgende:

  1. Aanwezigheid van *.pem-bestanden in de MySQL-gegevensmap. Dit zijn de verschillende client- en servercertificaten en sleutels die in gebruik zijn voor SSL, zoals hier beschreven.
  2. Er zal een opmerking in het mysqld-foutlogbestand staan ​​tijdens het opstarten van de server, zoals:
    • [Opmerking] Ca.pem, server-cert.pem en server-key.pem gevonden in de gegevensmap. Ik probeer SSL-ondersteuning in te schakelen door ze te gebruiken.
  3. Waarde van de variabele 'have_ssl' is JA:

mysql> toon variabelen zoals 'have_ssl';

+—————+——-+

| Variabele_naam | Waarde |

+—————+——-+

| have_ssl      | JA |

+—————+——-+

Met betrekking tot de MySQL-client probeert deze standaard altijd voor een versleutelde netwerkverbinding met de server te gaan, en als dat niet lukt, valt hij terug naar de niet-versleutelde modus.

Dus, door verbinding te maken met de MySQL-server met het commando:

mysql -h -u -p

We kunnen controleren of de huidige clientverbinding al dan niet versleuteld is met het statuscommando:

mysql> status

————–

mysql  Ver 14.14 Distrib 5.7.21, voor Linux (x86_64) met  EditLine-wrapper

Verbindings-ID:         75

Huidige database:

Huidige gebruiker:          [email protected]

SSL:                   Het gebruikte cijfer is DHE-RSA-AES256-SHA

Huidige pager:         stdout

Outfile gebruiken:         ”

Scheidingsteken gebruiken:       ;

Serverversie:        5.7.21-log MySQL Community Server (GPL)

Protocolversie:      10

Verbinding:            127.0.0.1 via TCP/IP

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

Het hierboven gemarkeerde SSL-veld geeft aan dat de verbinding versleuteld is. We kunnen de MySQL-client echter vragen om verbinding te maken zonder SSL met het commando:

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

 mysql>-status

————–

Verbindings-ID:         93

Huidige database:

Huidige gebruiker:          [email protected]

SSL:                   Niet in gebruik

Huidige pager:         stdout

Outfile gebruiken:         ”

Scheidingsteken gebruiken:       ;

Serverversie:        5.7.21-log MySQL Community Server (GPL)

Protocolversie:      10

Verbinding:            127.0.0.1 via TCP/IP

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

We kunnen zien dat hoewel SSL op de server is ingeschakeld, we er verbinding mee kunnen maken zonder SSL.

MySQL-zelfstudie - SSL configureren en beheren op uw #MySQL-serverKlik om te tweeten

SSL uitschakelen in MySQL

Als het uw vereiste is om SSL volledig uit te schakelen op de MySQL-server in plaats van de standaardoptie 'ingeschakeld, maar optionele modus', kunnen we het volgende doen:

  1.  Verwijder het *.pem-certificaat en de sleutelbestanden in de MySQL-gegevensdirectory.
  2. Start MySQL met de SSL-optie uitgeschakeld. Dit kan worden gedaan door een regelitem toe te voegen:

ssl=0   in het mijn.cnf-bestand.

 We kunnen constateren dat:

  1. Er zullen GEEN notities zijn in mysqld-logboeken zoals:
    • [Opmerking] Ca.pem, server-cert.pem en server-key.pem gevonden in de gegevensmap. Ik probeer SSL-ondersteuning in te schakelen door ze te gebruiken.
  2.  Waarde van de variabele 'have_ssl' wordt UITGESCHAKELD:

mysql> toon variabelen zoals 'have_ssl';

+—————+——-+

| Variabele_naam | Waarde |

+—————+——-+

| have_ssl      | UITGESCHAKELD |

+—————+——-+

SSL afdwingen in MySQL

We zagen dat hoewel SSL standaard was ingeschakeld op de MySQL-server, het niet werd afgedwongen en we nog steeds verbinding konden maken zonder SSL.

Door nu de systeemvariabele required_secure_transport in te stellen, kunnen we afdwingen dat de server alleen SSL-verbindingen accepteert. Dit kan worden geverifieerd door te proberen verbinding te maken met de MySQL-server met het commando:

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

En we kunnen zien dat de verbinding zou worden geweigerd met de volgende foutmelding van de server:

ERROR 3159 (HY000):verbindingen die gebruikmaken van onveilig transport zijn verboden zolang –require_secure_transport=ON.

SSL-overwegingen voor replicatiekanalen

In een MySQL-replicatieconfiguratie maken de slaves standaard verbinding met de master zonder versleuteling.

Om op een veilige manier verbinding te maken met een master voor replicatieverkeer, moeten slaves MASTER_SSL=1; als onderdeel van de 'MASTER WIJZIGEN IN' commando dat parameters specificeert voor het verbinden met de master. Houd er rekening mee dat deze optie ook verplicht is als uw master is geconfigureerd om SSL-verbinding af te dwingen met behulp van required_secure_transport.


  1. MySQL-trigger om INSERT onder bepaalde voorwaarden te voorkomen

  2. tsql retourneert een tabel van een functie of winkelprocedure

  3. Is de OraOLEDB-provider in .NET onbetrouwbaar op CLOB-velden?

  4. SQL Server voegt auto-increment primaire sleutel toe aan bestaande tabel