
Предварительные условия
Прежде чем начать, убедитесь, что у вас есть следующие предварительные условия:
- Сервер Ubuntu / Debian с установленным MySQL.
- Root или sudo доступ к серверу.
- Зарегистрированное доменное имя или действительный IP-адрес.
Шаг 1: Генерация сертификатов SSL/TLS
Первым шагом будет создание SSL/TLS сертификатов для MySQL. Выполните следующие шаги:
1- Откройте окно терминала на вашем сервере Ubuntu.
2- Сгенерируйте закрытый ключ, выполнив следующую команду:
$ openssl genrsa -out server-key.pem 2048
Эта команда сгенерирует файл закрытого ключа с именем server-key.pem
.
3- Далее создайте запрос на подписание сертификата (CSR), выполнив следующую команду:
$ openssl req -new -key server-key.pem -out server-csr.pem
Эта команда создаст файл CSR с именем server-csr.pem
. Вам будет предложено предоставить такую информацию, как страна, штат, организация и общее имя (доменное имя или IP-адрес).
4- Теперь создайте самоподписанный сертификат SSL/TLS, используя CSR, выполнив следующую команду:
$ openssl x509 -req -in server-csr.pem -signkey server-key.pem -out server-cert.pem
Эта команда сгенерирует самоподписанный сертификат с именем server-cert.pem
.
5- Наконец, переместите сгенерированные файлы сертификата и ключа в каталог MySQL SSL/TLS, выполнив следующие команды:
$ sudo mv server-key.pem /etc/mysql/mysql-server-key.pem
$ sudo mv server-cert.pem /etc/mysql/mysql-server-cert.pem
$ sudo mv server-csr.pem /etc/mysql/mysql-server-csr.pem
Эти команды перемещают файлы в каталог /etc/mysql/
, который является каталогом SSL/TLS по умолчанию для MySQL на Ubuntu.
Шаг 2: Настройте MySQL на использование SSL/TLS
После генерации сертификатов SSL/TLS нам нужно настроить MySQL на их использование. Выполните следующие шаги:
1- Откройте файл конфигурации MySQL с помощью текстового редактора. Например:
$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
2- Найдите строку [mysqld]
раздел в файле конфигурации.
3- Добавьте следующие строки, чтобы включить SSL/TLS:
ssl-ca=/etc/mysql/mysql-server-cert.pem
ssl-cert=/etc/mysql/mysql-server-cert.pem
ssl-key=/etc/mysql/mysql-server-key.pem
В этих строках указаны пути к файлам сертификатов и ключей SSL/TLS, созданных на шаге 1.
4- Сохраните изменения и выйдите из текстового редактора.
5- Перезапустите службу MySQL, чтобы применить изменения конфигурации:
$ sudo service mysql restart
Теперь MySQL будет настроен на использование SSL/TLS для безопасных соединений.
Шаг 3: Настройка безопасных соединений для удаленных клиентов
Чтобы настроить безопасные соединения для удаленных клиентов, выполните следующие действия:
1- Откройте файл конфигурации MySQL с помощью текстового редактора. Например:
$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
2- Найдите строку [mysqld]
раздел в файле конфигурации.
3- Добавьте следующую строку, чтобы включить SSL/TLS для удаленных клиентов:
require_secure_transport=ON
Эта строка гарантирует, что удаленные клиенты должны использовать SSL/TLS для подключения к серверу MySQL.
4- Сохраните изменения и выйдите из текстового редактора.
5- Перезапустите службу MySQL, чтобы применить изменения конфигурации:
$ sudo service mysql restart
MySQL теперь будет требовать от удаленных клиентов использовать SSL/TLS для безопасных соединений.
Шаг 4: Проверка конфигурации SSL/TLS
Чтобы проверить, правильно ли настроен SSL/TLS для MySQL, выполните следующие действия:
1- Откройте клиент MySQL, выполнив следующую команду:
$ mysql -u root -p
2- Введите пароль корня MySQL, когда появится запрос.
3- Войдя в оболочку MySQL, выполните следующую команду, чтобы проверить, включен ли SSL/TLS:
sql> SHOW VARIABLES LIKE 'have_ssl';
Если вывод показывает have_ssl
как YES
, SSL/TLS включен и функционирует должным образом.
4- Чтобы просмотреть настройки SSL/TLS, выполните следующую команду:
sql> SHOW VARIABLES LIKE 'ssl%';
В результате будут выведены различные переменные, связанные с SSL/TLS, включая пути к файлам сертификатов и ключей.
5- Вы также можете протестировать SSL/TLS соединения, попытавшись подключиться к серверу MySQL с помощью SSL/TLS. Например:
$ mysql -u root -p --ssl-ca=/etc/mysql/mysql-server-cert.pem --ssl-cert=/etc/mysql/mysql-server-cert.pem --ssl-key=/etc/mysql/mysql-server-key.pem
Если соединение успешно, то SSL/TLS работает правильно.
Заключение
Настройка SSL/TLS для MySQL на Ubuntu добавляет дополнительный уровень безопасности в вашу систему баз данных, гарантируя, что конфиденциальные данные остаются защищенными во время передачи. Следуя шагам, описанным в этой статье, вы можете сгенерировать SSL/TLS сертификаты, настроить MySQL на их использование и включить безопасные соединения для удаленных клиентов. Не забывайте регулярно обновлять сертификаты SSL/TLS, чтобы поддерживать максимальный уровень безопасности вашего сервера MySQL.