Poznámka :Tento článek předpokládá, že jste na svém serveru nainstalovali a nakonfigurovali MySQL®.
Povolení SSL pro MySQL
Před instalací certifikátu SSL do databáze MySQL zálohujte a odstraňte výchozí soubory certifikátů. Pro tento krok si můžete vybrat svůj vlastní název adresáře. Tento příklad používá mysql-backup-certs adresář. Chcete-li provést následující kroky, přepněte na uživatele root.
-
Vytvořte nový záložní adresář:
mkdir -p ~/mysql-backup-certs/
-
Přejděte na /var/lib/mysql a přesuňte každý výchozí certifikát do nově vytvořeného záložního adresáře:
cd /var/lib/mysql mv ca.pem ca-key.pem ~/mysql-backup-certs/ mv server-key.pem server-cert.pem ~/mysql-backup-certs/ mv client-key.pem client-cert.pem ~/mysql-backup-certs/ mv private_key.pem public_key.pem ~/mysql-backup-certs/
-
Restartujte MySQL spuštěním jednoho z následujících příkazů:
service mysqld restart
nebo
systemctl restart mysqld
-
Pomocí jednoho z následujících příkazů zkontrolujte
mysqld
stav:service mysqld status
nebo
systemctl status mysqld
-
Zkontrolujte stav SSL z prostředí MySQL. Chcete-li to provést, přihlaste se do MySQL jako uživatel root:
mysql -u root -p (Enter MySQL root password)
-
Spuštěním následujícího dotazu zkontrolujte stav SSL v MySQL:
SHOW GLOBAL VARIABLES LIKE '%ssl%'; STATUS;
Poznámka :Není nutné používat velká písmena. Příklad je používá k odlišení syntaxe příkazu od toho, na co se dotazujete.
V předchozím příkazu chcete vidět stav SSL jakodeaktivováno a uživatel root je připojen bez SSL.
-
Chcete-li povolit připojení SSL s naším vlastním certifikátem, úpravou souborumy.cnf soubor, spusťte jeden z následujících příkazů:
vim /etc/my.cnf
nebo
nano /etc/my.cnf
-
Najděte [mysqld] a přidejte následující konfigurační nastavení:
# You will use your own SSL certificates directory for these. The following are examples only. ssl-ca=/etc/pki/tls/certs/ca.pem ssl-cert=/etc/pki/tls/certs/server-cert.pem ssl-key=/etc/pki/tls/private/server-key.pem
-
Uložte a ukončete soubor. Poté restartujte MySQL spuštěním jednoho z následujících příkazů:
service mysqld restart
nebo
systemctl restart mysqld
-
Po zálohování MySQL se přihlaste zpět do prostředí MySQL:
mysql -u root -p (Enter MySQL root password)
-
Spusťte dotaz SSL znovu:
SHOW VARIABLES LIKE '%ssl%'; STATUS;
-
Pokud hodnota sekce SSL ukazuje ano , SSL je povoleno pro MySQL. Stále však vidíte, že uživatel root není připojen pomocí SSL. To je normální. Pokud to chcete změnit, můžete vynutit, aby všechna uživatelská připojení localhost používala SSL. Musíte upravit my.cnf soubor znovu spuštěním jednoho z následujících příkazů:
vim /etc/my.cnf
nebo
nano /etc/my.cnf
-
Na konci zadejte následující konfiguraci:
[client] ssl-ca=/etc/pki/tls/certs/ca.pem ssl-cert=/etc/pki/tls/certs/client-cert.pem ssl-key=/etc/pki/tls/private/client-key.pem
-
Restartujte MySQL. Po zálohování MySQL se znovu přihlaste do shellu MySQL:
mysql -u root -p (Enter MySQL root password)
-
Spusťte znovu následující dotaz:
SHOW VARIABLES LIKE '%ssl%'; STATUS;
Pokud chcete pouze povolit připojení SSL z připojení localhost, jste hotovi. Pokud však chcete také povolit vzdálené přihlášení pro MySQL, čtěte dále.
Povolit vzdálené připojení pro MySQL
Následující pokyny umožňují vzdálená připojení pro MySQL. Navíc tito vzdálení uživatelé potřebují mít soubory certifikátu podepsané vaší certifikační autoritou (CA), aby se mohli připojit.
Tento příklad označuje (pomocí tří hvězdiček:***
) nastavení vynucující podpis CA, pokud chcete povolit vzdálená připojení bez CA.
-
K úpravě souboru /etc/my.cnf použijte preferovaný textový editor příkazového řádku soubor znovu:
vim /etc/my.cnf
nebo
nano /etc/my.cnf
-
V dolní části [mysqld] uveďte následující sekce:
bind-address = * require_secure_transport = ON ***
-
Uložte a ukončete soubor pomocí
:wq
. -
Restartujte MySQL. Potvrďte, že MySQL znovu běží. Musíte se znovu přihlásit do shellu MySQL.
-
Po přihlášení vytvořte uživatele spuštěním jednoho z následujících příkazů:
CREATE USER 'example'@'%' IDENTIFIED BY 'password';
nebo
CREATE USER 'example'@'%' IDENTIFIED BY 'password' REQUIRE X509; ***
-
Poté, co tomuto uživateli udělíte oprávnění k databázím, ke kterým má mít oprávnění, vyprázdněte oprávnění k aktualizaci oprávnění MySQL z prostředí shellu:
flush privileges;
Možná jste si všimli, že %
umístěný za @
symbol v předchozím create user
příkaz je to, co ve skutečnosti označuje uživatele jako vzdáleného uživatele.
Jako bonus, pokud máte uživatele, který přistupuje k MySQL pouze ze statické IP adresy, můžete zadat tuto IP adresu místo %
umožnit tomuto uživateli přístup k MySQL ze své konkrétní IP adresy. Mějte však na paměti, že uživatel může přistupovat k databázi pouze z této IP adresy. Pokud se jejich IP adresa změní, již nemají přístup. To je důvod, proč většina správců používá obecné vzdálené nastavení %
místo toho.
Nyní jste povolili připojení SSL a také vzdálený přístup k databázi MySQL.