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=mysqlGenerating 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.