MariaDB este o bază de date open source gratuită și este cel mai des utilizat înlocuitor pentru MySQL. Este realizat de dezvoltatorii MySQL și este menit să rămână liber în cadrul GNU GPL. Este foarte rapid, scalabil și vine cu un set bogat de caracteristici care îl fac foarte versatil pentru o mare varietate de cazuri de utilizare.
Acest tutorial vă va descoperi cum să instalați și configurați MariaDB cu suport SSL pe Ubuntu 16.04.
cerinţe
- O nouă instanță Ubult 16.04 Vultr.
- Un utilizator non-root cu privilegii sudo.
- O adresă IP statică 192.168.0.190 este configurată pe instanța serverului.
- O adresă IP statică 192.168.0.191 este configurată pe mașina client.
Pasul 1: Instalați MariaDB
În mod implicit, cea mai recentă versiune a MariaDB nu este disponibilă în depozitul Ubuntu 16.04; deci va trebui să adăugați depozitul MariaDB la sistemul dvs.
Mai întâi, descărcați cheia cu următoarea comandă:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Apoi, adăugați depozitul MariaDB la /etc/apt/sources.list
fișier:
sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list
Actualizați indexul apt cu următoarea comandă:
sudo apt-get update -y
După actualizarea indexului apt, instalați serverul MariaDB cu următoarea comandă:
sudo apt-get install mariadb-server -y
Porniți serverul MariaDB și permiteți-l să pornească la momentul de pornire:
sudo systemctl start mysql
sudo systemctl enable mysql
Apoi, va trebui să rulați mysql_secure_installation
scriptul pentru a securiza instalarea MariaDB. Acest script vă permite să setați parola rădăcină, să eliminați utilizatorii anonimi, să nu permiteți autentificarea la distanță root și să eliminați baza de date de testare:
sudo mysql_secure_installation
Pasul 2: Creați un certificat SSL și o cheie privată pentru server
Mai întâi, creați un director pentru a stoca toate fișierele cheie și certificate.
sudo mkdir /etc/mysql-ssl
Apoi, schimbați directorul în /etc/mysql-ssl
și creați certificatul CA și cheia privată cu următoarea comandă:
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
Răspundeți la toate întrebările așa cum se arată mai jos:
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 []:[email protected]
Apoi, creați o cheie privată pentru server cu următoarea comandă:
sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem
Răspundeți la toate întrebările așa cum ați făcut în comanda anterioară.
În continuare, exportați cheia privată a serverului către o cheie de tip RSA cu următoarea comandă:
sudo sudo openssl rsa -in server-key.pem -out server-key.pem
În cele din urmă, generați un certificat server folosind certificatul CA după cum urmează:
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
Acum puteți vedea toate certificatele și cheia cu următoarea comandă:
ls
Ar trebui să vedeți următoarea ieșire:
ca-cert.pem ca-key.pem server-cert.pem server-key.pem server-req.pem
După ce ați terminat, puteți trece la pasul următor.
Ar trebui să aveți toate certificatele și o cheie privată; iar acum va trebui să configurați MariaDB pentru a utiliza cheia și certificatele. Puteți face acest lucru prin editarea /etc/mysql/mariadb.conf.d/50-server.cnf
fișierului:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Adăugați următoarele linii sub [mysqld]
secțiune:
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 = *
Salvați fișierul, apoi reporniți serviciul MariaDB pentru a aplica aceste modificări:
sudo systemctl restart mysql
Acum, puteți verifica dacă configurația SSL funcționează sau nu cu următoarea întrebare:
mysql -u root -p
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
Dacă configurația a avut succes, ar trebui să vedeți următoarea ieșire:
+---------------+--------------------------------+
| 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 |
+---------------+--------------------------------+
Ar trebui să observați have_ssl
și have_openssl
valorile sunt activate în ieșirea de mai sus.
Pasul 4: Creați un utilizator cu privilegii SSL
Creați un utilizator la distanță care are privilegiul de a accesa serverul MariaDB prin SSL. Faceți acest lucru rulând următoarea comandă:
În primul rând, conectați-vă la shell-ul MySQL:
mysql -u root -p
Apoi, creați un utilizator remote
și acordați privilegiul pentru a accesa serverul prin SSL.
MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'remote'@'192.168.0.191' IDENTIFIED BY 'password' REQUIRE SSL;
Apoi, spălați privilegiile cu următoarea comandă:
MariaDB [(none)]>FLUSH PRIVILEGES;
În final, ieșiți din shell-ul MySQL cu următoarea comandă:
MariaDB [(none)]>exit;
Notă: 192.168.0.191 este adresa IP a mașinii de utilizator la distanță (Client).
Serverul dvs. este acum gata să permită conexiunile către utilizatorii de la distanță.
Pasul 5: Creează certificatul de client
Configurația dvs. pe partea de server este completă. În continuare, va trebui să creați o cheie nouă și un certificat pentru client.
Pe mașina serverului, creați cheia client cu următoarea comandă:
sudo cd /etc/mysql-ssl
sudo sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem
Apoi, procesați cheia RSA client cu următoarea comandă:
sudo openssl rsa -in client-key.pem -out client-key.pem
În cele din urmă, semnați certificatul de client cu următoarea comandă:
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
Toate certificatele și cheia sunt gata pentru client. În continuare, va trebui să copiați toate certificatele client pe orice mașină client unde doriți să rulați clientul MariaDB.
Va trebui să instalați clientul MariaDB pe mașina client.
În primul rând, pe mașina client, descărcați cheia pentru MariaDB cu următoarea comandă:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Apoi, adăugați depozitul MariaDB la /etc/apt/sources.list
fișier:
sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list
Apoi, actualizați indexul apt cu următoarea comandă:
sudo apt-get update -y
După actualizarea indexului apt, instalați clientul MariaDB pe mașina client cu următoarea comandă:
sudo apt-get install mariadb-client -y
Acum creați un director pentru a stoca toate certificatele:
sudo mkdir /etc/mysql-ssl
Apoi, copiați toate certificatele client de la mașina server pe mașina client cu următoarea comandă:
sudo scp [email protected]:/etc/mysql-ssl/client-* /etc/mysql-ssl/
Apoi, va trebui să configurați clientul MariaDB pentru a utiliza SSL. Puteți face acest lucru creând un /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
fișier:
sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
Adăugați următoarele linii:
[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
Salvați fișierul când ați terminat.
Pasul 7: Verificați conexiunile la distanță
Acum că totul este configurat, este timpul să verificați dacă vă puteți conecta cu succes la serverul MariaDB sau nu.
Pe aparatul client, executați următoarea comandă pentru a vă conecta la serverul MariaDB:
mysql -u remote -h 192.168.0.190 -p mysql
Vi se va cere să introduceți remote
parola utilizatorului. După ce dați parola, veți fi conectat la serverul MariaDB de la distanță.
Verificați starea conexiunii cu următoarea comandă:
MariaDB [mysql]> status
Ar trebui să vedeți următoarea ieșire:
--------------
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: [email protected]
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
Ar trebui să vedeți SSL: Cipher in use is DHE-RSA-AES256-SHA
în rezultatul de mai sus. Asta înseamnă că conexiunea dvs. este acum sigură cu SSL.
Concluzie
Felicitări! Ați configurat cu succes un server MariaDB cu suport SSL. Acum puteți acorda acces altor clienți pentru a accesa serverul MariaDB prin SSL.