sql >> Databáze >  >> RDS >> Mysql

Jak povolit SSL/TLS pro MySQL v Ubuntu

MySQL umožňuje uživatelům bezpečné připojení k databázím pomocí SSL/TLS certifikátů. V tomto článku se podíváme na konfiguraci MySQL SSL – jak povolit SSL/TLS pro MySQL v Ubuntu.


Jak povolit SSL/TLS pro MySQL

Zde jsou kroky k nastavení připojení SSL v MySQL.


1. Nainstalujte MySQL

Otevřete terminál a spusťte následující příkazy pro instalaci MySQL.

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

Bonusové čtení:MySQL Change Collation of All Tables


2. Zkontrolujte stav SSL

Přihlaste se do MySQL jako root

$ mysql -uroot -p

Budete vyzváni k zadání hesla root. Po přihlášení zadejte následující příkaz pro zjištění aktuálního stavu 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       |          |
+---------------+----------+

Zjistíte, že have_openssl a have_ssl oba mají hodnotu DISABLED. Znamená to, že SSL není v MySQL povoleno.

Bonusové čtení:Nejlepší databázové blogy ke sledování


3. Vygenerujte certifikáty SSL/TLS

Dále musíme vygenerovat certifikáty SSL/TLS a nasměrovat server MySQL na jejich umístění. Lidé obvykle používají openssl ke generování certifikátů SSL a poté je přesouvají do /var/lib/mysql, což je výchozí umístění souborů SSL pro server MySQL.

MySQL 5.7 a novější verze se však již dodávají s nástrojem mysql_ssl_rsa_setup pro zjednodušení tohoto procesu. Generuje SSL certifikáty a ukládá je na /var/lib/mysql.

Protože potřebujeme proces mysql, abychom mohli číst tyto soubory, vytvoříme mysql jako vlastník těchto souborů, jak je uvedeno níže.

Spuštěním následujícího příkazu vygenerujte certifikáty 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' 
-----

Vygenerované soubory můžete zkontrolovat spuštěním následujícího příkazu

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

Uvidíte něco jako následující

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

Jedná se o soubor certifikátu SSL a páry soukromých klíčů pro certifikační autoritu, server MySQL a klienta MySQL.

Bonusové čtení:Nejlepší alternativy MySQL Workbench


4. Povolte připojení SSL na serveru MySQL

Poté restartujte MySQL Server, abyste povolili SSL/TLS v MySQL.

$ sudo systemctl restart mysql 

MySQL Server po spuštění automaticky vyhledá soubory certifikátu SSL v /var/lib/mysql. Nemusíte tedy ručně zadávat jejich umístění v konfiguračním souboru MySQL.

Bonusové čtení:Jak povolit mezipaměť dotazů MySQL


5. Ověřte připojení SSL

Přihlaste se do MySQL jako dříve (krok 2) a spusťte následující příkaz.

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  |
+---------------+-----------------+

Nyní najdete have_openssl a have_ssl proměnné jsou ANO. Uvidíte také, že ssl_ca , ssl_cert a ssl_key jsou vyplněny vhodnými hodnotami.

Můžete také zkontrolovat podrobnosti o připojení.

mysql> \s

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


6. Nakonfigurujte SSL pro vzdálené připojení (volitelné)

Pokud má váš server MySQL vzdálená příchozí připojení, můžete povolit SSL pro vzdálené připojení a dokonce jej učinit povinným úpravou konfiguračního souboru serveru MySQL.

Otevřete terminál a spusťte následující příkaz pro otevření konfigurace MySQL.

$ sudo vi /etc/mysql/my.cnf

Přidejte blok kódu [mysqld], jak je znázorněno, pod dva příkazy !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

V posledním řádku jsme nastavili bind-address na 0.0.0.0, abychom umožnili vzdálená připojení. Pokud jste již povolili vzdálená připojení, nemusíte jej přidávat.

Pro použití změn restartujte MySQL Server. Od této chvíle bude MySQL vyžadovat SSL.

U vzdálených připojení nezapomeňte otevřít port 443 místo výchozího 3306. Je to proto, že připojení SSL probíhá přes port 443, nikoli 3306.

Doufejme, že vám tento článek pomůže povolit připojení SSL/TLS v MySQL.

  1. Jak vložit data Excel nebo CSV do tabulky pomocí grafického uživatelského rozhraní v SQL Server - SQL Server / Výukový program TSQL, část 102

  2. Export dat dotazů SQL do Excelu

  3. Použití Sysbenche ke generování testovacích dat pro sdílenou tabulku v MySQL

  4. Jak zkopírovat tabulku v MySQL