Zahtjevi
Korak 1: Instalirajte MariaDB
Korak 2: Napravite SSL certifikat i privatni ključ za poslužitelj
Korak 3: Konfigurirajte MariaDB poslužitelj da koristi SSL
Korak 4: Stvorite korisnika sa SSL privilegijama
Korak 5: Izradite certifikat klijenta
Korak 6: Konfigurirajte MariaDB klijenta za korištenje SSL-a
Korak 7: Provjerite udaljene veze
Zaključak
MariaDB je besplatna baza podataka otvorenog koda i najraširenija je zamjena za MySQL. Napravljen je od strane programera MySQL-a i namijenjen je da ostane besplatan pod GNU GPL-om. Vrlo je brz, skalabilan i dolazi s bogatim skupom značajki koje ga čine vrlo svestranim za širok raspon slučajeva korištenja.
Ovaj vodič će vas provesti kroz kako instalirati i konfigurirati MariaDB s podrškom za SSL na Ubuntu 16.04.
Zahtjevi
- Svježa instanca Ubuntu 16.04 Vultr.
- Ne-root korisnik sa sudo privilegijama.
- Statička IP adresa 192.168.0.190 konfigurirana je na instanci poslužitelja.
- Na klijentskom stroju konfigurirana je statička IP adresa 192.168.0.191.
Korak 1: Instalirajte MariaDB
Prema zadanim postavkama, najnovija verzija MariaDB-a nije dostupna u Ubuntu 16.04 spremištu; tako da ćete morati svom sustavu dodati spremište MariaDB.
Prvo preuzmite ključ sljedećom naredbom:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Zatim dodajte MariaDB spremište u /etc/apt/sources.listdatoteku:
sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list
Ažurirajte apt indeks sljedećom naredbom:
sudo apt-get update -y
Nakon što je apt indeks ažuriran, instalirajte MariaDB poslužitelj sljedećom naredbom:
sudo apt-get install mariadb-server -y
Pokrenite MariaDB poslužitelj i omogućite mu pokretanje prilikom pokretanja:
sudo systemctl start mysql
sudo systemctl enable mysql
Zatim ćete morati pokrenuti mysql_secure_installationskriptu za sigurnu instalaciju MariaDB-a. Ova skripta vam omogućuje da postavite root lozinku, uklonite anonimne korisnike, zabranite udaljenu root prijavu i uklonite testnu bazu podataka:
sudo mysql_secure_installation
Korak 2: Napravite SSL certifikat i privatni ključ za poslužitelj
Prvo stvorite direktorij za pohranu svih datoteka ključeva i certifikata.
sudo mkdir /etc/mysql-ssl
Zatim promijenite imenik u /etc/mysql-ssli stvorite CA certifikat i privatni ključ sljedećom naredbom:
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
Odgovorite na sva pitanja kao što je prikazano u nastavku:
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
Zatim stvorite privatni ključ za poslužitelj sa sljedećom naredbom:
sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout server-key.pem -out server-req.pem
Odgovorite na sva pitanja kao u prethodnoj naredbi.
Zatim izvezite privatni ključ poslužitelja u ključ tipa RSA sljedećom naredbom:
sudo sudo openssl rsa -in server-key.pem -out server-key.pem
Konačno, generirajte certifikat poslužitelja koristeći CA certifikat na sljedeći način:
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
Sada možete vidjeti sve certifikate i ključ sljedećom naredbom:
ls
Trebali biste vidjeti sljedeći izlaz:
ca-cert.pem ca-key.pem server-cert.pem server-key.pem server-req.pem
Kada završite, možete nastaviti na sljedeći korak.
Trebali biste imati sve certifikate i privatni ključ; a sada ćete morati konfigurirati MariaDB za korištenje ključa i certifikata. To možete učiniti uređivanjem /etc/mysql/mariadb.conf.d/50-server.cnfdatoteke:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
Dodajte sljedeće retke ispod [mysqld]odjeljka:
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 = *
Spremite datoteku, a zatim ponovno pokrenite uslugu MariaDB da biste primijenili ove promjene:
sudo systemctl restart mysql
Sada možete provjeriti radi li konfiguracija SSL-a ili ne pomoću sljedećeg upita:
mysql -u root -p
MariaDB [(none)]> SHOW VARIABLES LIKE '%ssl%';
Ako je konfiguracija bila uspješna, trebali biste vidjeti sljedeći izlaz:
+---------------+--------------------------------+
| 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 |
+---------------+--------------------------------+
Trebali bi primijetiti have_ssli have_opensslvrijednosti su omogućene u gore izlaz.
Korak 4: Stvorite korisnika sa SSL privilegijama
Stvorite udaljenog korisnika koji ima privilegiju za pristup MariaDB poslužitelju preko SSL-a. Učinite to pokretanjem sljedeće naredbe:
Prvo se prijavite na MySQL ljusku:
mysql -u root -p
Zatim stvorite korisnika remotei dodijelite privilegiju za pristup poslužitelju putem SSL-a.
MariaDB [(none)]>GRANT ALL PRIVILEGES ON *.* TO 'remote'@'192.168.0.191' IDENTIFIED BY 'password' REQUIRE SSL;
Zatim ispraznite privilegije sljedećom naredbom:
MariaDB [(none)]>FLUSH PRIVILEGES;
Na kraju izađite iz MySQL ljuske sljedećom naredbom:
MariaDB [(none)]>exit;
Napomena: 192.168.0.191 je IP adresa stroja udaljenog korisnika (klijenta).
Vaš poslužitelj je sada spreman za dopuštanje povezivanja udaljenom korisniku.
Korak 5: Izradite certifikat klijenta
Konfiguracija na strani poslužitelja je dovršena. Zatim ćete morati stvoriti novi ključ i certifikat za klijenta.
Na poslužiteljskom stroju kreirajte klijentski ključ sa sljedećom naredbom:
sudo cd /etc/mysql-ssl
sudo sudo openssl req -newkey rsa:2048 -days 365 -nodes -keyout client-key.pem -out client-req.pem
Zatim obradite klijentski RSA ključ sljedećom naredbom:
sudo openssl rsa -in client-key.pem -out client-key.pem
Na kraju potpišite certifikat klijenta sljedećom naredbom:
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
Svi certifikati i ključ su spremni za klijenta. Zatim ćete morati kopirati sve klijentske certifikate na bilo koji klijentski stroj na kojem želite pokrenuti MariaDB klijenta.
Morat ćete instalirati MariaDB klijenta na klijentski stroj.
Prvo, na klijentskom stroju preuzmite ključ za MariaDB sa sljedećom naredbom:
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
Zatim dodajte MariaDB spremište u /etc/apt/sources.listdatoteku:
sudo echo "deb [arch=amd64,i386,ppc64el] http://ftp.utexas.edu/mariadb/repo/10.1/ubuntu xenial main" >> /etc/apt/sources.list
Zatim ažurirajte apt indeks sljedećom naredbom:
sudo apt-get update -y
Nakon što se apt indeks ažurira, instalirajte MariaDB klijenta na klijentski stroj sljedećom naredbom:
sudo apt-get install mariadb-client -y
Sada stvorite direktorij za pohranu svih certifikata:
sudo mkdir /etc/mysql-ssl
Zatim kopirajte sve klijentske certifikate sa poslužiteljskog stroja na klijentski stroj sljedećom naredbom:
sudo scp root@192.168.0.190:/etc/mysql-ssl/client-* /etc/mysql-ssl/
Zatim ćete morati konfigurirati MariaDB klijenta da koristi SSL. To možete učiniti stvaranjem /etc/mysql/mariadb.conf.d/50-mysql-clients.cnfdatoteke:
sudo nano /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
Dodajte sljedeće retke:
[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
Spremite datoteku kada završite.
Korak 7: Provjerite udaljene veze
Sada kada je sve konfigurirano, vrijeme je da provjerite možete li se uspješno spojiti na MariaDB poslužitelj ili ne.
Na klijentskom stroju pokrenite sljedeću naredbu za povezivanje s MariaDB poslužiteljem:
mysql -u remote -h 192.168.0.190 -p mysql
Od vas će se tražiti da unesete remotekorisničku lozinku. Nakon davanja lozinke, bit ćete prijavljeni na udaljeni MariaDB poslužitelj.
Provjerite status veze sljedećom naredbom:
MariaDB [mysql]> status
Trebali biste vidjeti sljedeći izlaz:
--------------
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
Trebali biste vidjeti SSL: Cipher in use is DHE-RSA-AES256-SHAu gornjem izlazu. To znači da je vaša veza sada sigurna sa SSL-om.
Zaključak
Čestitamo! Uspješno ste konfigurirali MariaDB poslužitelj s podrškom za SSL. Sada možete dodijeliti pristup drugim klijentima za pristup MariaDB poslužitelju putem SSL-a.