Отключение SSL для клиентских приложений MySQL

Вопрос или проблема

Я настроил SSL для репликации MySQL. Проблема в том, что это создает проблемы с другими локальными приложениями, которые используют MySQL.

Например, с postfix:

25 июл 23:00:22 srv1 postfix/proxymap[3141]: предупреждение: подключение к серверу MySQL 127.0.0.1: ошибка SSL-соединения: невозможно проверить контрольную сумму пира
25 июл 23:00:22 srv1 postfix/trivial-rewrite[3353]: предупреждение: virtual_mailbox_domains: proxy:mysql:/etc/postfix/mysql-virtual_domains.cf: проблема с поиском таблицы
25 июл 23:00:22 srv1 postfix/trivial-rewrite[3353]: предупреждение: ошибка поиска virtual_mailbox_domains

или amavis:

25 июл 23:08:12 srv1 amavis[5625]: (05625-01) (!)connect_to_sql: невозможно подключиться к DSN 'DBI:mysql:database=dbispconfig;host=127.0.0.1;port=3306': ошибка SSL-соединения: невозможно проверить контрольную сумму пира

и также pureftp

25 июл 23:02:42 srv1 pure-ftpd: (?@2a02:810c:XXXXXXXX) [ОШИБКА] SQL сервер, похоже, недоступен [ошибка SSL-соединения: невозможно проверить контрольную сумму пира]

Поскольку мне не нужно локальное шифрование, я хочу отключить его, но не знаю как. Я только что добавил запись cnf для клиентов с:

[client]
#ssl-ca=/etc/letsencrypt/live/mydomain/chain.pem
#ssl-mode=DISABLED
ssl=0

Но безрезультатно. Для postfix я нашел в документации заметку:

Postfix 3.1 и предыдущие версии не считывают настройки группы опций [client], если не указаны непустые значения option_file или option_group. Чтобы включить это, укажите, например, “option_group = client”.

Поэтому я добавил синтаксис option_group во все файлы /etc/postfix/mysql-*.cf. Но после перезапуска проблема осталась…

Когда я отключаю SSL на сервере, проблемы исчезают. Но я хочу иметь SSL для безопасности репликации.

Есть идеи?

Вот несколько идей.

  1. Используйте postconf, чтобы проверить, нет ли опечаток или несовместимостей в конфигурационных файлах Postfix. Этот инструмент предупреждает, если есть неиспользуемые параметры.
  2. Не требуйте использования SSL на стороне сервера. Вместо этого настройте клиент репликации на отказ от небезопасных соединений.
  3. Используйте функцию сервера MySQL 5.7, которая позволяет изменять требования SSL/TLS для каждого пользователя с помощью CREATE USER ... REQUIRE ... и ALTER USER ... REQUIRE ... и уберите обязательный SSL для локальных клиентов.
  4. Поскольку postfix использует libmysqlclient, должно быть возможно переопределить место, где postfix ищет my.cnf, и использовать вместо этого раздел [mysql]. Это можно сделать через переменную окружения MYSQL_HOME, но сомневаюсь, что это хорошая идея даже пробовать 🙂

Ответ или решение

Чтобы отключить SSL-соединения для клиентских приложений MySQL, которые работают локально, сохраняя при этом использование SSL для репликации, вам необходимо адаптировать настройки как на стороне клиента, так и на стороне сервера. Рассмотрим, как это сделать:

1. Настройки конфигурации для клиента

Для начала вам следует убедиться, что в конфигурационных файлах ваших клиентских приложений (например, Postfix, Amavis и Pure-FTP) правильно указаны параметры, отключающие использование SSL. Например, в файле конфигурации Postfix:

# /etc/postfix/mysql-virtual_domains.cf
option_group = client

Также убедитесь, что параметры SSL правильно настроены:

[client]
ssl=0

2. Условиe SSL для пользователей MySQL

Вы также можете настроить определенные пользователи MySQL так, чтобы они не требовали SSL-запросов для локальных подключений. Это сделано с помощью изменения параметров пользователей:

ALTER USER 'your_user'@'localhost' REQUIRE NONE;

Это отключит обязательные требования к SSL при подключении с указанного хоста. Проверьте, что другие пользователи, используемые вашими приложениями, также имеют подобные настройки.

3. Изменение параметров сервера

На стороне сервера вы можете рассмотреть возможность отключения обязательного использования SSL для некоторых подключений, но при этом оставить SSL для репликации. Это можно сделать, добавив в конфигурацию MySQL следующее:

[mysqld]
require_secure_transport = OFF

4. Проверка путей к конфигурационным файлам

Убедитесь, что ваши клиентские приложения используют правильный конфигурационный файл MySQL. Для этого можно указать переменные окружения, например, через MYSQL_HOME. Это позволит обеспечить правильную работу приложений с нужными параметрами:

export MYSQL_HOME=/etc/mysql

5. Перезапуск служб

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

systemctl restart postfix
systemctl restart amavisd
systemctl restart pure-ftpd

6. Диагностика проблем

Если ошибка продолжает возникать, используйте утилиты для диагностики, такие как postconf для проверки конфигурации Postfix. Убедитесь, что все параметры указаны верно и совместимы с вашей версией Postfix.

Заключение

Следуя этим шагам, вы сможете отключить SSL-соединения для локальных клиентских приложений MySQL, сохранив возможность использования SSL для репликации. Если у вас остались вопросы или нужны дополнительные пояснения, не стесняйтесь обращаться за помощью.

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

Капча загружается...