MySQL позволява на потребителите да се свързват сигурно с бази данни, използвайки SSL/TLS сертификати. В тази статия ще разгледаме MySQL SSL конфигурация – как да активирате SSL/TLS за MySQL в Ubuntu.
Как да активирам SSL/TLS за MySQL
Ето стъпките за настройка на SSL връзки в MySQL.
1. Инсталирайте MySQL
Отворете терминала и изпълнете следните команди, за да инсталирате MySQL.
$ sudo apt-get update $ sudo apt-get install mysql-client
Бонус четене:MySQL промяна на колекцията на всички таблици
2. Проверете състоянието на SSL
Влезте в MySQL като root
$ mysql -uroot -p
Ще бъдете подканени за root парола. След като влезете, въведете следната команда, за да намерите текущото състояние на 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 | | +---------------+----------+
Ще откриете, че have_openssl и have_ssl и двете имат стойност DISABLED. Това означава, че SSL не е активиран в MySQL.
Бонус за четене:Топ блогове за база данни, които да следвате
3. Генериране на SSL/TLS сертификати
След това трябва да генерираме SSL/TLS сертификати и да насочим MySQL сървъра към техните местоположения. Обикновено хората използват openssl за генериране на SSL сертификати и след това ги преместват в /var/lib/mysql, което е местоположението по подразбиране на SSL файловете за MySQL сървъра.
Въпреки това, MySQL 5.7 и по-нови версии вече се доставят с помощна програма mysql_ssl_rsa_setup за опростяване на този процес. Той генерира SSL сертификати и ги съхранява в /var/lib/mysql.
Тъй като се нуждаем от mysql процес, за да можем да четем тези файлове, ще направим mysql като собственик на тези файлове, както е показано по-долу.
Изпълнете следната команда, за да генерирате 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'
-----
Можете да проверите генерираните файлове, като изпълните следната команда
$ ls -all /var/lib/mysql/*.pem
Ще видите нещо като следното
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
Това са SSL сертификат файл и двойки частни ключове за сертифициращ орган, MySQL сървър и MySQL клиент.
Бонус за четене:Топ алтернативи на MySQL Workbench
4. Активирайте SSL връзките в MySQL сървър
След това рестартирайте MySQL Server, за да активирате SSL/TLS в MySQL.
$ sudo systemctl restart mysql
MySQL Server автоматично ще търси файлове за SSL сертификат в /var/lib/mysql, когато стартира. Така че не е нужно ръчно да указвате местоположението им в конфигурационния файл на MySQL.
Бонус четене:Как да активирате MySQL Query Cache
5. Проверете SSL връзката
Влезте в MySQL както преди (стъпка 2) и изпълнете следната команда.
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 | +---------------+-----------------+
Сега ще намерите have_openssl и have_ssl променливите са ДА. Ще видите също, че ssl_ca , ssl_cert и ssl_key се попълват с подходящи стойности.
Можете също да проверите подробностите за връзката си.
mysql>\s
--------------
. . .
SSL: Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection: 127.0.0.1 via TCP/IP
. . .
--------------
6. Конфигурирайте SSL за отдалечена връзка (По избор)
Ако вашият MySQL сървър има отдалечени входящи връзки, тогава можете да активирате SSL за отдалечена връзка и дори да го направите задължително, като промените конфигурационния файл на MySQL сървъра.
Отворете терминала и изпълнете следната команда, за да отворите конфигурацията на MySQL.
$ sudo vi /etc/mysql/my.cnf
Добавете [mysqld] блок от код, както е показано, под двата оператора !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
В последния ред сме задали bind-address на 0.0.0.0, за да позволим отдалечени връзки. Не е необходимо да го добавяте, ако вече сте активирали отдалечени връзки.
Рестартирайте MySQL Server, за да приложите промените. Отсега нататък MySQL ще изисква SSL.
За отдалечени връзки, моля, не забравяйте да отворите порт 443, вместо 3306 по подразбиране. Това е така, защото SSL връзките се осъществяват през порт 443, а не 3306.
Надяваме се, че тази статия ще ви помогне да активирате SSL/TLS връзка в MySQL.