Krav
Trinn 1: Installer MariaDB
Trinn 2: Opprett et SSL-sertifikat og en privat nøkkel for serveren
Trinn 3: Konfigurer MariaDB Server til å bruke SSL
Trinn 4: Opprett en bruker med SSL-rettigheter
Trinn 5: Opprett klientsertifikatet
Trinn 6: Konfigurer MariaDB-klienten til å bruke SSL
Trinn 7: Bekreft eksterne tilkoblinger
Konklusjon
MariaDB er en gratis åpen kildekode-database, og er den mest brukte drop-in-erstatningen for MySQL. Den er laget av utviklerne av MySQL og ment å forbli gratis under GNU GPL. Den er veldig rask, skalerbar og kommer med et rikt sett med funksjoner som gjør den veldig allsidig for en lang rekke brukstilfeller.
Denne opplæringen vil lede deg gjennom hvordan du installerer og konfigurerer MariaDB med SSL-støtte på Ubuntu 16.04.
Krav
- En fersk Ubuntu 16.04 Vultr-forekomst.
- En ikke-rootbruker med sudo-rettigheter.
- En statisk IP-adresse 192.168.0.190 er konfigurert på serverforekomsten.
- En statisk IP-adresse 192.168.0.191 er konfigurert på klientmaskinen.
Trinn 1: Installer MariaDB
Som standard er den nyeste versjonen av MariaDB ikke tilgjengelig i Ubuntu 16.04-depotet; så du må legge til MariaDB-depotet til systemet ditt.
Først laster du ned nøkkelen med følgende kommando:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Deretter legger du til MariaDB-depotet til /etc/apt/sources.listfilen:
sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list
Oppdater apt-indeksen med følgende kommando:
sudo apt-get update -y
Når apt index har blitt oppdatert, installer MariaDB-serveren med følgende kommando:
sudo apt-get install mariadb-server -y
Start MariaDB-serveren og la den starte ved oppstartstid:
sudo systemctl start mysql
sudo systemctl enable mysql
Deretter må du kjøre mysql_secure_installationskript for å sikre MariaDB-installasjonen. Dette skriptet lar deg angi root-passordet, fjerne anonyme brukere, ikke tillate ekstern rotpålogging og fjerne testdatabasen:
sudo mysql_secure_installation
Trinn 2: Opprett et SSL-sertifikat og en privat nøkkel for serveren
Først oppretter du en katalog for å lagre alle nøkkel- og sertifikatfilene.
sudo mkdir /etc/mysql-ssl
Deretter endrer du katalogen til /etc/mysql-sslog oppretter CA-sertifikatet og den private nøkkelen med følgende kommando:
sudo cd /etc/mysql-ssl
sudo openssl genrsa 2048 > ca-key.pem
sudo openssl req -new -x509 -nodes -days 365000 -key ca-key.pem -out ca-cert.pem
Svar på alle spørsmålene som vist nedenfor:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:IN
State or Province Name (full name) [Some-State]:GUJ
Locality Name (eg, city) []:JND
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ENJ
Organizational Unit Name (eg, section) []:SYSTEM
Common Name (e.g. server FQDN or YOUR name) []:HITESH
Email Address []:example@example.com
Deretter oppretter du en privat nøkkel for serveren med følgende kommando:
sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem
Svar på alle spørsmålene som du gjorde i forrige kommando.
Deretter eksporterer du serverens private nøkkel til en RSA-type nøkkel med følgende kommando:
sudo sudo openssl rsa -in server-key.pem -out server-key.pem
Til slutt genererer du et serversertifikat ved å bruke CA-sertifikatet som følger:
sudo openssl x509 -req -in server-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem
Du kan nå se alle sertifikatene og nøkkelen med følgende kommando:
ls
Du bør se følgende utgang:
ca-cert.pem ca-key.pem server-cert.pem server-key.pem server-req.pem
Når du er ferdig, kan du gå videre til neste trinn.
Du bør ha alle sertifikatene og en privat nøkkel; og nå må du konfigurere MariaDB til å bruke nøkkelen og sertifikatene. Du kan gjøre dette ved å redigere /etc/mysql/mariadb.conf.d/50-server.cnffilen:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Legg til følgende linjer under [mysqld]seksjonen:
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/server-cert.pem
ssl-key=/etc/mysql-ssl/server-key.pem
##Change this value to connect the MariaDB server from another host.
bind-address = *
Lagre filen, og start deretter MariaDB-tjenesten på nytt for å bruke disse endringene:
sudo systemctl restart mysql
Nå kan du sjekke om SSL-konfigurasjonen fungerer eller ikke med følgende spørring:
mysql -u root -p
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
Hvis konfigurasjonen var vellykket, bør du se følgende utgang:
+---------------+--------------------------------+
| Variable_name | Value |
+---------------+--------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/mysql-ssl/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/mysql-ssl/server-cert.pem |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | /etc/mysql-ssl/server-key.pem |
+---------------+--------------------------------+
Du bør legge merke til have_sslog have_opensslverdier er aktivert i over produksjonen.
Trinn 4: Opprett en bruker med SSL-rettigheter
Opprett en ekstern bruker som har rettigheter til å få tilgang til MariaDB-serveren over SSL. Gjør dette ved å kjøre følgende kommando:
Først, logg inn på MySQL-skallet:
mysql -u root -p
Deretter oppretter du bruker remoteog gir tilgang til serveren over SSL.
MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'remote'@'192.168.0.191' IDENTIFIED BY 'password' REQUIRE SSL;
Tøm deretter privilegiene med følgende kommando:
MariaDB [(none)]>FLUSH PRIVILEGES;
Til slutt, gå ut av MySQL-skallet med følgende kommando:
MariaDB [(none)]>exit;
Merk: 192.168.0.191 er IP-adressen til den eksterne brukeren (klienten).
Serveren din er nå klar til å tillate tilkoblinger til ekstern bruker.
Trinn 5: Opprett klientsertifikatet
Konfigurasjonen på serversiden er fullført. Deretter må du opprette en ny nøkkel og sertifikat for klienten.
På servermaskinen oppretter du klientnøkkelen med følgende kommando:
sudo cd /etc/mysql-ssl
sudo sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem
Deretter behandler du klientens RSA-nøkkel med følgende kommando:
sudo openssl rsa -in client-key.pem -out client-key.pem
Til slutt signerer du klientsertifikatet med følgende kommando:
sudo openssl x509 -req -in client-req.pem -days 365 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 -out client-cert.pem
Alle sertifikatene og nøkkelen er klare for klienten. Deretter må du kopiere alle klientsertifikatene til en hvilken som helst klientmaskin der du vil kjøre MariaDB-klienten.
Du må installere MariaDB-klienten på klientmaskinen.
Først, på klientmaskinen, last ned nøkkelen for MariaDB med følgende kommando:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Deretter legger du til MariaDB-depotet til /etc/apt/sources.listfilen:
sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list
Deretter oppdaterer du apt-indeksen med følgende kommando:
sudo apt-get update -y
Når apt index er oppdatert, installer MariaDB-klienten på klientmaskinen med følgende kommando:
sudo apt-get install mariadb-client -y
Opprett nå en katalog for å lagre alle sertifikatene:
sudo mkdir /etc/mysql-ssl
Deretter kopierer du alle klientsertifikatene fra servermaskinen til klientmaskinen med følgende kommando:
sudo scp root@192.168.0.190:/etc/mysql-ssl/client-* /etc/mysql-ssl/
Deretter må du konfigurere MariaDB-klienten til å bruke SSL. Du kan gjøre dette ved å lage en /etc/mysql/mariadb.conf.d/50-mysql-clients.cnffil:
sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
Legg til følgende linjer:
[client]
ssl-ca=/etc/mysql-ssl/ca-cert.pem
ssl-cert=/etc/mysql-ssl/client-cert.pem
ssl-key=/etc/mysql-ssl/client-key.pem
Lagre filen når du er ferdig.
Trinn 7: Bekreft eksterne tilkoblinger
Nå som alt er konfigurert, er det på tide å bekrefte om du kan koble til MariaDB-serveren eller ikke.
På klientmaskinen, kjør følgende kommando for å koble til MariaDB-serveren:
mysql -u remote -h 192.168.0.190 -p mysql
Du vil bli bedt om å skrive inn remotebrukerpassordet. Etter å ha gitt passordet, vil du bli logget på den eksterne MariaDB-serveren.
Sjekk statusen til tilkoblingen med følgende kommando:
MariaDB [mysql]> status
Du bør se følgende utgang:
--------------
mysql Ver 15.1 Distrib 10.2.7-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Connection id: 62
Current database: mysql
Current user: remote@192.168.0.191
SSL: Cipher in use is DHE-RSA-AES256-SHA
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server: MariaDB
Server version: 10.0.31-MariaDB-0ubuntu0.16.04.2 Ubuntu 16.04
Protocol version: 10
Connection: 192.168.0.190 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 1 hours 31 min 31 sec
Du bør se SSL: Cipher in use is DHE-RSA-AES256-SHAi utgangen ovenfor. Det betyr at tilkoblingen din nå er sikker med SSL.
Konklusjon
Gratulerer! Du har konfigurert en MariaDB-server med SSL-støtte. Du kan nå gi tilgang til andre klienter for å få tilgang til MariaDB-serveren over SSL.