Понедельник, 13.10.2025 19:00

Подключаемся к MariaDB в РЕДОС Linux с использованием сертификатов и SSL в Windows 10 через HeidiSQL

Подключаемся к MariaDB в РЕДОС Linux с использованием сертификатов и SSL в Windows 10 через HeidiSQL

В процессе разработки и обслуживания БД вам, возможно, потребуется удаленно подключиться к серверу MariaDB. Подключение без использования защищенного подключения несет угрозу несанкционированного доступа к серверу, так как пароль передается в открытом виде и может быть перехвачен злоумышленниками.

Для защиты соединения при подключении к удаленному серверу MariaDB нужно использовать SSL.

Сегодня мы рассмотрим защищенное подключение к удаленному серверу MariaDB с использованием HeidiSQL.

Здесь я не буду подробно рассматривать процесс выдачи сертификата, так как всё уже описано в статье.

В прошлой статье мы рассмотрели создание локального CA, сегодня мы будем использовать его для выпуска сертификатов.

Выпуск сертификата для сервера

Выпустим сертификат:

sudo su ca

cd ~/req
mkdir mariadb-srv-1
cd mariadb-srv-1

openssl req -new -keyout private.key -out server.req -config ../openssl.cnf -extensions v3_req -subj "/C=RU/ST=Magadan Region/L=Magadan/O=AltuninVV/CN=mariadb-srv-1.altuninvv.ru"
cd ~/ca

./easyrsa import-req ~/req/mariadb-srv-1/server.req mariadb-srv-1

./easyrsa --subject-alt-name='DNS:mariadb-srv-1.altuninvv.ru,IP:192.168.1.44' sign-req server mariadb-srv-1 

cp /home/ca/ca/pki/issued/mariadb-srv-1.crt ~/req/mariadb-srv-1/public.crt

cd ~/req/mariadb-srv-1

openssl rsa -in private.key -out private.key

Скопируем файлы:

/home/ca/req/mariadb-srv-1/private.key
/home/ca/req/mariadb-srv-1/public.crt
/home/ca/ca/pki/ca.crt

В папку ~/ssl на сервере с mariadb.

Создадим папку для файлов с ключами:

sudo mkdir /etc/ssl/mariadb

Скопируем файлы в папку:

sudo cp ~/ssl/private.key /etc/ssl/mariadb/
sudo cp ~/ssl/public.crt /etc/ssl/mariadb/
sudo cp ~/ssl/ca.crt /etc/ssl/mariadb/

Настройка mariadb

Создадим файл для конфигурации SSL:

sudo touch /etc/my.cnf.d/ssl.cnf
sudo mcedit /etc/my.cnf.d/ssl.cnf

Содержимое:

[mariadb]
ssl_cert =/etc/ssl/mariadb/public.crt
ssl_key = /etc/ssl/mariadb/private.key
ssl_ca = /etc/ssl/mariadb/ca.crt

Перезапустим

sudo systemctl restart mariadb

Проверим

mysql -u root -p
SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl | YES |
+---------------+-------+
1 row in set (0.001 sec)

На сервере включена поддержка SSL.

Выпускаем сертификат для клиента

Вернемся на сервер с CA. Допустим, мы будем выпускать сертификат для пользователя altuninvv:

sudo su ca
mkdir ~/req/altuninvv
cd ~/req/altuninvv

openssl req -new -keyout private.key -out cert.req -config ../openssl.cnf -extensions v3_req -subj "/C=RU/ST=Magadan Region/L=Magadan/O=AltuninVV/O=Users/CN=AltuninVV"

openssl rsa -in private.key -out private.key

cd ~/ca

./easyrsa import-req ~/req/altuninvv/cert.req altuninvv

./easyrsa sign-req client altuninvv 

cp /home/ca/ca/pki/issued/altuninvv.crt ~/req/altuninvv/public.crt

Обратите внимание, для клиента мы используем команду:

./easyrsa sign-req client altuninvv 

Тестировать подключение мы будем в HeidiSQL

Перейдем в Windows 10

Далее мы будем работать в консоли cmd 

cd %USERPROFILE%\

Создадим папку для ключей:

mkdir .ssl_keys

Создадим файлы для ключей:

cd .ssl_keys
type nul > private.key
type nul > public.key
type nul > ca.key

На сервере CA запустим и вставим содержимое в соответствующие файлы в Windows 10:

cat /home/ca/ca/pki/ca.crt
cat /home/ca/req/altuninvv/private.key
cat /home/ca/req/altuninvv/public.crt

Создание пользователя для подключения с MariaDB

Обратите внимание! Сертификат не имеет ничего общего с имена пользователей на сервере! Он используется только для инициализации соединения посредством SSL!

Мы создадим пользователя, который сможет подключаться только при использовании SSL!

Перейдем на сервер с MariaDB:

mysql -u root -p

Запустим из консоли mysql:

CREATE USER 'root'@'192.168.1.40' IDENTIFIED BY 'PaSSw0rD' REQUIRE SSL;
GRANT ALL ON *.* TO 'root'@'192.168.1.40'  WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit;

Перезапустим:

sudo systemctl restart mariadb

Подключаемся к серверу MariaDB с использованием SSL в HeidiSQL

Укажем путь к файлам с сертификатами и ключами как указано на картинках:

Изображение удалено.Изображение удалено.

Проверяем использование SSL сервером MariaDB 

В HeidiSQL выполним запросы:

SHOW STATUS LIKE 'Ssl_version';
Ssl_version TLSv1.2
SHOW STATUS LIKE 'Ssl_cipher';
Ssl_cipher ECDHE-RSA-AES256-GCM-SHA384

Так же мы можем проверить соединения включив performance_schema, для этого на сервере MariaDB добавим файл:

echo -e '[mariadb]\nperformance_schema=ON' | sudo tee /etc/my.cnf.d/performance_schema.cnf

Перезапустим службу:

sudo systemctl restart mysqld

Закроем HeidiSQL и откроем заново, подключимся к серверу.

Выполним запрос:

SELECT
t.THREAD_ID,
t.PROCESSLIST_USER,
t.PROCESSLIST_HOST,
t.CONNECTION_TYPE,
sbt.VARIABLE_VALUE AS cipher
FROM
performance_schema.threads t
LEFT JOIN
performance_schema.status_by_thread sbt
ON
(t.THREAD_ID = sbt.THREAD_ID AND sbt.VARIABLE_NAME = 'Ssl_cipher')
WHERE
t.PROCESSLIST_USER IS NOT NULL;

Результат

+-----------+------------------+------------------+-----------------+-----------------------------+
| THREAD_ID | PROCESSLIST_USER | PROCESSLIST_HOST | CONNECTION_TYPE | cipher                      |
+-----------+------------------+------------------+-----------------+-----------------------------+
|    11     |       root       |   192.168.1.40   |     SSL/TLS     | ECDHE-RSA-AES256-GCM-SHA384 |
+-----------+------------------+------------------+-----------------+-----------------------------+

Мы используем SSL!

Отключим использование performance_schema:

sudo rm /etc/my.cnf.d/performance_schema.cnf

Перезапустим:

sudo systemctl restart mysqld

Если мы снимем галочку с SSL в HeidiSQL то при попытке соединится получим ошибку:

/* Access denied for user 'root'@'192.168.1.40' (using password: YES) */

Установка галочки снова позволит нам подключиться к серверу!

Заключение

Сегодня мы рассмотрели настройку защищенного подключения к удаленному серверу MariaDB с использованием HeidiSQL:

Выпустили сертификат для сервера;

Установили сертификат и ключи на сервер MariaDB;

Настроили MariaDB на использование сертификатов;

Выпустили сертификат для клиента;

Создали пользователя в MariaDB с возможностью подключения только по SSL;

Подключились к серверу с использованием SSL;

Проверили использование сервером SSL.

Категория РЕД ОС Linux
Теги sql SSL mariadb easyrsa

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 82