Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak włączyć SSL/TLS dla MySQL w Ubuntu?

MySQL umożliwia użytkownikom bezpieczne łączenie się z bazami danych za pomocą certyfikatów SSL/TLS. W tym artykule przyjrzymy się konfiguracji MySQL SSL – jak włączyć SSL/TLS dla MySQL w Ubuntu.


Jak włączyć SSL/TLS dla MySQL

Oto kroki, aby skonfigurować połączenia SSL w MySQL.


1. Zainstaluj MySQL

Otwórz terminal i uruchom następujące polecenia, aby zainstalować MySQL.

$ sudo apt-get update
$ sudo apt-get install mysql-client

Przeczytaj bonus:MySQL zmienia sortowanie wszystkich tabel


2. Sprawdź status SSL

Zaloguj się do MySQL jako root

$ mysql -uroot -p

Zostaniesz poproszony o hasło roota. Po zalogowaniu wpisz następujące polecenie, aby znaleźć aktualny stan SSL/TLS

mysql> SHOW VARIABLES LIKE '%ssl%';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_crl       |          |
| ssl_crlpath   |          |
| ssl_key       |          |
+---------------+----------+

Przekonasz się, że have_openssl i have_ssl oba mają wartość WYŁĄCZONE. Oznacza to, że protokół SSL nie jest włączony w MySQL.

Przeczytaj bonus:Najlepsze blogi dotyczące baz danych do obserwowania


3. Generuj certyfikaty SSL/TLS

Następnie musimy wygenerować certyfikaty SSL/TLS i wskazać serwer MySQL do ich lokalizacji. Zazwyczaj ludzie używają openssl do generowania certyfikatów SSL, a następnie przenoszą je do /var/lib/mysql, która jest domyślną lokalizacją plików SSL dla serwera MySQL.

Jednak MySQL 5.7 i nowsze wersje są już dostarczane z narzędziem mysql_ssl_rsa_setup, które upraszcza ten proces. Generuje certyfikaty SSL i przechowuje je w /var/lib/mysql.

Ponieważ potrzebujemy procesu mysql, aby móc odczytać te pliki, utworzymy mysql jako właściciel tych plików, jak pokazano poniżej.

Uruchom następujące polecenie, aby wygenerować certyfikaty SSL

$ sudo mysql_ssl_rsa_setup --uid=mysql

Generating a 2048 bit RSA private key ...................................+++ .....+++ 
writing new private key to 'ca-key.pem' 
----- 
Generating a 2048 bit RSA private key ......+++ .................................+++ 
writing new private key to 'server-key.pem' 
----- 
Generating a 2048 bit RSA private key ......................................................+++ .................................................................................+++ 
writing new private key to 'client-key.pem' 
-----

Możesz sprawdzić wygenerowane pliki, uruchamiając następujące polecenie

$ ls -all /var/lib/mysql/*.pem

Zobaczysz coś takiego

256740      4 -rw-r--r--   1 mysql    mysql        1078 May 1 12:24 /var/lib/mysql/server-cert.pem
   256735      4 -rw-------   1 mysql    mysql        1675 May 1 12:24 /var/lib/mysqlsql/ca-key.pem
   256739      4 -rw-r--r--   1 mysql    mysql         451 May 1 12:24 /var/lib/mysqlsql/public_key.pem
   256741      4 -rw-------   1 mysql    mysql        1689 May 1 12:24 /var/lib/mysqlsql/client-key.pem
   256737      4 -rw-r--r--   1 mysql    mysql        1064 May 1 12:24 /var/lib/mysqlsql/ca.pem
   256743      4 -rw-r--r--   1 mysql    mysql        1048 May 1 12:24 /var/lib/mysqlsql/client-cert.pem
   256736      4 -rw-------   1 mysql    mysql        1625 May 1 12:24 /var/lib/mysqlsql/private_key.pem
   256738      4 -rw-------   1 mysql    mysql        1615 May 1 12:24 /var/lib/mysqlsql/server-key.pem

Są to plik certyfikatu SSL i pary kluczy prywatnych dla urzędu certyfikacji, serwera MySQL i klienta MySQL.

Przeczytaj bonus:Najlepsze alternatywy dla MySQL Workbench


4. Włącz połączenia SSL w MySQL Server

Następnie uruchom ponownie MySQL Server, aby włączyć SSL/TLS w MySQL.

$ sudo systemctl restart mysql 

MySQL Server podczas uruchamiania automatycznie szuka plików certyfikatów SSL w /var/lib/mysql. Nie musisz więc ręcznie określać ich lokalizacji w pliku konfiguracyjnym MySQL.

Przeczytaj bonus:Jak włączyć pamięć podręczną zapytań MySQL


5. Sprawdź połączenie SSL

Zaloguj się do MySQL jak poprzednio (krok 2) i uruchom następujące polecenie.

SHOW VARIABLES LIKE '%ssl%';
Output
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+

Teraz znajdziesz have_openssl i have_ssl zmienne są TAK. Zobaczysz też, że ssl_ca , ssl_cert i ssl_key są wypełnione odpowiednimi wartościami.

Możesz również sprawdzić szczegóły połączenia.

mysql> \s

-------------- 
. . . 
SSL: Cipher in use is DHE-RSA-AES256-SHA 
. . . 
Connection: 127.0.0.1 via TCP/IP 
. . . 
--------------


6. Skonfiguruj SSL dla połączenia zdalnego (opcjonalnie)

Jeśli twój serwer MySQL ma zdalne połączenia przychodzące, możesz włączyć SSL dla połączeń zdalnych, a nawet uczynić go obowiązkowym, modyfikując plik konfiguracyjny serwera MySQL.

Otwórz terminal i uruchom następujące polecenie, aby otworzyć konfigurację MySQL.

$ sudo vi /etc/mysql/my.cnf

Dodaj blok kodu [mysqld], jak pokazano, poniżej dwóch instrukcji !includedir.

!includedir /etc/mysql/conf.d/ 
!includedir /etc/mysql/mysql.conf.d/ 

[mysqld] 
# Require clients to connect either using SSL 
# or through a local socket file 
require_secure_transport = ON
bind-address = 0.0.0.0

W ostatniej linii ustawiliśmy bind-address na 0.0.0.0, aby umożliwić zdalne połączenia. Nie musisz go dodawać, jeśli masz już włączone połączenia zdalne.

Zrestartuj MySQL Server, aby zastosować zmiany. Od teraz MySQL będzie wymagał SSL.

W przypadku połączeń zdalnych nie zapomnij otworzyć portu 443 zamiast domyślnego 3306. Dzieje się tak, ponieważ połączenia SSL odbywają się przez port 443, a nie 3306.

Mamy nadzieję, że ten artykuł pomoże Ci włączyć połączenie SSL/TLS w MySQL.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ustawianie hasła użytkownika root MySQL w systemie OS X

  2. Hybrydowe obciążenia baz danych OLTP/Analytics:replikacja danych MySQL do ClickHouse

  3. Utwórz nową tabelę, wybierając dane z innych tabel za pomocą CREATE TABLE AS

  4. Instalacja i konfiguracja MySQL na Ubuntu 20.04

  5. Jak wstawić ciąg do innego ciągu w MySQL za pomocą INSERT()