Как настроить SSL/TLS для MySQL на Ubuntu и Debian

Secure Socket Layer (SSL) и Transport Layer Security (TLS) — это криптографические протоколы, используемые для установления безопасных соединений между клиентом и сервером. Когда речь идет о системах управления базами данных, таких как MySQL, настройка SSL/TLS может помочь защитить конфиденциальные данные во время передачи. В этой статье мы расскажем вам о том, как настроить SSL/TLS для MySQL на Ubuntu.

Предварительные условия

Прежде чем начать, убедитесь, что у вас есть следующие предварительные условия:

  1. Сервер Ubuntu / Debian с установленным MySQL.
  2. Root или sudo доступ к серверу.
  3. Зарегистрированное доменное имя или действительный 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.

 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *