MySQL iwwer eng VPN: iwwerpréift de Server, net nëmmen d’Verschlësselung
D’Verschlësselung op de falschen Host bleift falsch. Vergläicht d’ssl-mode-Wäerter a fuert dann eng Verbindung aus, déi de geduechte Server nennt an dat beweist.
Dir späichert eng Verbindung op 10.20.4.15, d’VPN fällt aus, an de Client verbënnt sech nach ëmmer. Dat ass keng gutt Noriicht. Eng privat Adress ass eng Plaz bannent deem Routingkontext, an deem Dir Iech befënnt, a vill Netzwierker benotzen déiselwecht Beräicher. De Client huet e MySQL-Server erreecht, just vläicht net Ären.
D’Korrektur huet zwou Hälften, an nëmmen eng dovun ass iwwer d’Netzwierk. Halt d’Verbindung op hirem virgesinnene Wee, a maacht de Client de Server authentifizéieren, mat deem hie schwätzt. Déi éischt Halschent ass do, wou eng VPN hëlleft; déi zweet Halschent muss konfiguréiert ginn.
Verschlësselt op wat, genee?
TLS schützt d’Gespréich virun all deem, deen an der Mëtt ass, an et seet näischt iwwer wien den Endpunkt behaapt ze sinn, ausser de Client iwwerpréift et. En Zertifikat, deen géint eng vertrauenswürdeg Autoritéit validéiert, beweist, datt den Zertifikat vun där Autoritéit koum. Et beweist net, datt den Zertifikat fir den Hostnumm ausgestallt gouf, den Dir wëllt erreechen, an dat sinn ënnerschiddlech Froen.
Dëst ass keng theoretesch Lück. Captive-Portalen, Feeler mat falschem VRF an iwwerlappend Adresspläng produzéieren alleguer e Server, deen ganz bereet ass, TLS mat Iech auszehandelen. Wann de Client nëmmen d’Verschlësselung verlaangt, ass d’Sessioun privat a riicht op déi falsch Datebank.
Also ass déi relevant Fro net, ob d’Verbindung verschlësselt ass, mä ob se op déi Identitéit verschlësselt ass, déi Dir geduecht hutt. Am Client vu MySQL lieft dësen Ënnerscheed komplett an der Astellung ssl-mode.
Déi fënnef ssl-mode-Wäerter an der Praxis
Et gëtt fënnef Wäerter, an nëmmen ee vun hinnen äntwert op d’Fro vun dësem Handbuch. D’Tabell listet, wat jiddereen tatsächlech garantéiert, anstatt wat säin Numm suggeréiert.
| Mode | What it guarantees |
|---|---|
DISABLED | No TLS at all; everything on the wire is readable |
PREFERRED | Tries TLS and falls back to plaintext when the account and server allow it, so it is not a fail-closed requirement |
REQUIRED | Refuses to connect without TLS, and does not validate the certificate |
VERIFY_CA | Validates the server certificate against the configured CA and does not check the hostname |
VERIFY_IDENTITY | Validates the CA and checks that the certificate names the host the client used |
Nëmmen déi lescht Zeil äntwert op d’Fro an dësem Artikel. PREFERRED ass et wäert, e gesondert ze ernimmen, well e Client, dee still op Kloertext fält, ass schléchter wéi een, dee refuséiert: Dir gleeft, Dir hätt Verschlësselung, an d’Paketopnam ass net d’accord.
Eng Verbindung, déi Dir haut ausfëiere kënnt
Den Kommando hei drënner ass d’Form, déi Dir benotze sollt, mat zwee Plazhalter: den approuvéierten Datebanksnumm an eng CA-Datei, déi iwwer en approuvéierte Kanal kritt gouf. Keen vun deenen zwee soll aus deem geholl ginn, wat de Server Iech beim éischte Kontakt ubitt.
mysql --host=db.corp.example --user=app_reader \
--ssl-mode=VERIFY_IDENTITY \
--ssl-ca=/approved/path/ca.pem --password
--password ouni Wäert freet no Engab, wat de Geheimnis aus der Prozesslëscht an aus Ärer Shell-Historie eraushält. Dat ass eng kleng Gewunnecht mat engem groussen Effekt op gedeelte Spronghosten, wou eng Kommandozeil fir aner Benotzer sichtbar ass.
Wann dëst feelt, ënnerscheet den Feelertext d’Fäll besser wéi d’Intuition. E CA-Fehler bedeit, datt d’Kette net validéiert an Dir sollt kucken, wéi eng CA den Zertifikat vum Server ënnerschriwwen huet. En Hostnummfehler bedeit, datt d’Kette an der Rei ass an den Numm net passt, wat meeschtens bedeit, datt Dir Iech mam richtege Server ënner dem falschen Numm verbonnen hutt an net mam falsche Server.
Datt e Prompt erschéngt, ass kee Beweis, datt e Passwuert schonn iwwerdroe gouf, an eng gescheitert Verbindung beweist net, datt näischt de Client verlooss huet. Wann Dir e vergaangen Evenement rekonstruéiert, identifizéiert de Client, seng Konfiguratioun, den Authentifikatiouns-Plugin an d’Etapp, déi gescheitert ass. D’Expositioun aus der leschter Feelermeldung ze schätzen ass eng Vermutung.
Wann den Numm aus engem Tunnel kënnt
Lokalt Portweiterleeden brécht d’Identitéitskontroll op eng Manéier, déi d’Leit iwwerrascht. Wann Dir e lokale Port op d’Datebank weiterleet an Iech mat localhost verbënnt, validéiert de Client den Zertifikat géint localhost, an et gouf keen Zertifikat fir dësen Numm ausgestallt. D’Verbindung kann komplett sécher sinn an d’Iwwerpréifung wäert trotzdem feelen, wat d’Kontroll ass, déi wéi virgesinn funktionéiert.
Et gëtt zwou éierlech Äntwerten. Gitt dem weidergeleetem Endpunkt en Numm, deen op d’Loopback-Adress opléist an am Zertifikat vum Server erschéngt, oder benotzt den Hostnumm vun Ufank bis Enn, sou datt de Client déi richteg Identitéit iwwerpréift. Déi éischt ass bequem fir Entwéckler a verlaangt Zertifikatsaarbecht; déi zweet ass méi einfach ze iwwerdenken an dacks de richtege Standard fir Automatiséierung. D’Iwwerpréifung ausschalten, fir datt d’Weiterleeden fonctionéiert, geheit déi Eegenschaft ewech, déi Dir wollt bäisetzen.
Acceptatioun sinn dräi Bedingunge
Schreift den Acceptatiounstest als dräi getrennte Behauptungen: d’Verbindung huet de virgesinnene Wee benotzt, d’Verschlësselung war verlaangt an net préféréiert, an d’Identitéit vum Server gouf géint vertrauenswürdegt Material iwwerpréift. E gréngen VPN-Symbol etabléiert keng dovun.
Fir GUI-Clients a fir MariaDB, kuckt d’Dokumentatioun vum Verkeefer selwer, anstatt unzehuelen, datt d’Schreifweis vum Fändel iwwerdroe gëtt. D’MySQL-Dokumentatioun iwwer verschlësselt Verbindungen deckt d’Ënnerscheeder tëscht de Modien an d’Ufuerderung vun der CA-Distributioun, an et ass d’Referenz, déi Dir iwwerpréift, ier Dir eng Produktiounsverbindungszeechen ännert.