Mysql Создание сертификатов и ключей SSL/TLS и RSA
- Последнее обновление: 3 Ноября 2023 г.
- Просмотры: 692
- Автор: Админ
Коллеги всем привет.
В прошлой статье мы говорили о том как настраивать зашифрованных соединений с базой данных Mysql с помощью сертификата SSL/TLS. Сегодня будем говорить о том как создавать сертификаты SSL/TLS и как их применять на базе данных без перезагрузки самой базы данных.
Предыдущая статья: Настройка SSL/TLS на MySQL. Использования зашифрованного соединения.
Версию СУБД я использую: 8.0.29
Содержимое статьи:
- Срок действия сертификата SSL/TLS.
- Создать сертификат SSL/TLS.
- Применяем новый сертификат.
- Проверка.
- Старые сессии.
- Итоги.
1. Срок действия сертификата SSL/TLS.
У всех сертификатов SSL/TLS есть свой срок действия. После того как срок действия заканчивается то при следующем подключении к базе данных возникнут проблемы с доступом или вообще база данных вас не пропустит. Чтобы посмотреть когда у вас заканчивается срок действия сертификата есть два способа.
Первый способ просмотра это через системную базу данных performance_schema и обратится до таблицы tls_channel_status.
mysql> select * from performance_schema.tls_channel_status WHERE CHANNEL = 'mysql_main';
Нас интересует два поля:
- Ssl_server_not_after - Время окончания срока действия сертификата.
- Ssl_server_not_before - Время когда был создан сертификат.
Второй вариант это обратится до системной переменной Ssl_server_not.
mysql> SHOW STATUS LIKE 'Ssl_server_not%';
Результат будет один и тот же. Можете использовать любой из вариантов который вам понравится.
2. Создать сертификат SSL/TLS.
За создания нового сертификата в Mysql отвечает утилита mysql_ssl_rsa_setup. Но создавать сертификат нужно в отдельной директории, а то если вы будете создавать сертификат в той же директории где у вас уже лежат старые сертификаты то mysql_ssl_rsa_setup ничего вам не создаст, а просто завершит свою роботу и даже ошибки не покажет.
2.1. Создаем директорию для сертификата.
$. mkdir -p /app/mysql/safety/09_06_2022
2.2. Создаем новый сертификат.
$. mysql_ssl_rsa_setup --datadir=/app/mysql/safety/09_06_2022 --verbose
После выполнения команды в нашей новой директории должны появится сертификаты.
2.3. Назначим владельца директории пользователя и группу mysql.
$. chown -R mysql:mysql /app/mysql/safety/09_06_2022
3. Применяем новый сертификат.
Осталась проблема в том как нам теперь применить наш созданный сертификат.
Есть конечно простой вариант просто прописать новый путь до сертификатов в конфигурационном файле и перезапустить базу данных, но если у нас постоянно нагруженная база данных и очень много клиентов то перезапускать базу данных как-то не очень хочется.
Решения есть!
После того как вы создали ваш сертификат вам нужно выполнить несколько действий:
3.1. Поменять путь к файлу сертификата центра сертификации.
mysql> SET GLOBAL ssl_ca = '/app/mysql/safety/09_06_2022/ca.pem';
3.2. Поменять путь к файлу сертификата открытого ключа.
mysql> SET GLOBAL ssl_cert = '/app/mysql/safety/09_06_2022/server-cert.pem';
3.3. Поменять путь к файлу закрытого ключа.
mysql> SET GLOBAL ssl_key = '/app/mysql/safety/09_06_2022/server-key.pem';
3.4. Запустить команду, которая перечитает новые ключи и применит их.
mysql> ALTER INSTANCE RELOAD TLS;
3.5. Но и конечно же прописать новые пути к сертификатам в конфигурационном файле.
4. Проверка.
После всего что мы сделали вам нужно перезайти в базу данных и проверить.
mysql> SHOW STATUS LIKE 'Ssl_server_not%';
Как видим у нас поменялись даты создания и дата конца действия сертификата.
5. Старые сессии.
Остался последний нюанс. Старые сессии которые остались в базе данных то они все еще будут использовать старый сертификат. Для того чтобы они использовали уже новый сертификат то нужно им перезайти в базу данных или сбросить сессии с помощью команд.
5.1. Найти сессии.
mysql> SHOW PROCESSLIST;
5.2. Сбросить сессию.
mysql> KILL session_id;
6. Итоги.
В итоги коллеги за эти две статьи мы научились как настраивать защищенные соединения с базой данных, и создавать новые сертификаты и применять их без перезагрузки базы данных.
Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.