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

Вступление

MySQL - это система управления реляционными базами данных с открытым исходным кодомmost popular в мире. Несмотря на то, что современные менеджеры пакетов сократили некоторые трения до запуска и работы MySQL, все же есть некоторые дополнительные настройки, которые следует выполнить после установки. Одним из наиболее важных аспектов, на которые нужно потратить дополнительное время, является безопасность.

По умолчанию MySQL настроен на прием только локальных подключений или подключений, исходящих с того же компьютера, на котором установлен MySQL. Если вам нужен удаленный доступ к базе данных MySQL, важно, чтобы вы делали это безопасно. В этом руководстве мы покажем, как настроить MySQL в Ubuntu 18.04 для приема удаленных соединений с шифрованием SSL / TLS.

Предпосылки

Для завершения этого руководства вам понадобится:

  • Серверы Ubuntu 18.04Two. Мы будем использовать один из этих серверов в качестве сервера MySQL, а другой - в качестве клиентского компьютера. Создайте пользователя без полномочий root с привилегиямиsudo и включите брандмауэр сufw на каждом из этих серверов. Следуйте нашимUbuntu 18.04 initial server setup guide, чтобы перевести оба сервера в соответствующее начальное состояние.

  • Наone of the machines установите и настройте сервер MySQL. Следуйте заSteps 1 through 3 нашегоMySQL installation guide for Ubuntu 18.04, чтобы сделать это. Следуя этому руководству, обязательно сконфигурируйте своего пользователя MySQLroot для аутентификации с паролем, как описано вStep 3 руководства, поскольку это необходимо для подключения к MySQL с использованием TCP, а не локального Сокет Unix.

Обратите внимание, что в этом руководстве сервер, на котором вы установили MySQL, будет называтьсяMySQL server, и все команды, которые должны выполняться на этом компьютере, будут отображаться на синем фоне, например:

Точно так же это руководство будет относиться к другому серверу как кMySQL client, и любые команды, которые должны быть запущены на этом компьютере, будут отображаться с красным фоном:

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

[[step-1 -—- verify-mysql-39-s-current-ssl-tls-status]] == Шаг 1. Проверка текущего статуса SSL / TLS MySQL

Прежде чем вносить какие-либо изменения в конфигурацию, вы можете проверить текущий статус SSL / TLS на экземпляреMySQL server.

Используйте следующую команду, чтобы начать сеанс MySQL в качестве пользователя MySQLroot. Эта команда включает параметр-p, который указываетmysql запрашивать пароль для входа в систему. Он также включает параметр-h, который используется для указания хоста для подключения. В этом случае он указывает на127.0.0.1, интерфейс обратной связи IPv4, также известный какlocalhost. Это заставит клиента подключиться кTCP вместо использования локального файла сокета. По умолчанию MySQL пытается установить соединение черезUnix socket file. Как правило, это быстрее и безопаснее, поскольку эти соединения могут быть сделаны только локально, и не нужно проходить все проверки и операции маршрутизации, которые должны выполнять соединения TCP. Соединение с TCP, однако, позволяет нам проверять статус SSL соединения:

mysql -u root -p -h 127.0.0.1

Вам будет предложено ввести пароль MySQLroot, который вы выбрали при установке и настройке MySQL. После ввода вы попадете в интерактивный сеанс MySQL.

Показать состояние переменных SSL / TLS, выполнив следующую команду:

SHOW VARIABLES LIKE '%ssl%';
Output+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_openssl  | DISABLED |
| have_ssl      | DISABLED |
| ssl_ca        |          |
| ssl_capath    |          |
| ssl_cert      |          |
| ssl_cipher    |          |
| ssl_crl       |          |
| ssl_crlpath   |          |
| ssl_key       |          |
+---------------+----------+
9 rows in set (0.01 sec)

Переменныеhave_openssl иhave_ssl отмечены какDISABLED. Это означает, что функциональность SSL была скомпилирована в сервер, но еще не включена.

Проверьте статус вашего текущего соединения, чтобы подтвердить это:

\s
Output--------------
mysql  Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using  EditLine wrapper

Connection id:      9
Current database:
Current user:       root@localhost
SSL:         Not in use
Current pager:      stdout
Using outfile:      ''
Using delimiter:    ;
Server version:     5.7.26-0ubuntu0.18.04.1 (Ubuntu)
Protocol version:   10
Connection:      127.0.0.1 via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
TCP port:       3306
Uptime:         40 min 11 sec

Threads: 1  Questions: 33  Slow queries: 0  Opens: 113  Flush tables: 1  Open tables: 106  Queries per second avg: 0.013
--------------

Как показывает вышеприведенный вывод, SSL в настоящее время не используется для этого соединения, даже если вы подключены через TCP.

Закройте текущий сеанс MySQL, когда вы закончите:

exit

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

[[шаг-2 -—- генерация-ssl-tls-сертификатов и ключей]] == Шаг 2. Создание сертификатов и ключей SSL / TLS

Чтобы включить SSL-соединения с MySQL, сначала необходимо сгенерировать соответствующие файлы сертификатов и ключей. MySQL версии 5.7 и выше предоставляет служебную программуmysql_ssl_rsa_setup, которая помогает упростить этот процесс. Версия MySQL, которую вы установили, выполнивprerequisite MySQL tutorial, включает эту утилиту, поэтому мы будем использовать ее здесь для создания необходимых файлов.

Процесс MySQL должен иметь возможность читать сгенерированные файлы, поэтому используйте параметр--uid, чтобы объявитьmysql в качестве системного пользователя, которому должны принадлежать сгенерированные файлы:

sudo mysql_ssl_rsa_setup --uid=mysql

Это приведет к выводу, похожему на следующее:

OutputGenerating a 2048 bit RSA private key
.+++
..........+++
writing new private key to 'ca-key.pem'
-----
Generating a 2048 bit RSA private key
........................................+++
............+++
writing new private key to 'server-key.pem'
-----
Generating a 2048 bit RSA private key
.................................+++
............................................................+++
writing new private key to 'client-key.pem'
-----

Эти новые файлы будут храниться в каталоге данных MySQL, который по умолчанию находится в/var/lib/mysql. Проверьте сгенерированные файлы, набрав:

sudo find /var/lib/mysql -name '*.pem' -ls
Output   258930      4 -rw-r--r--   1 mysql    mysql        1107 May  3 16:43 /var/lib/mysql/client-cert.pem
   258919      4 -rw-r--r--   1 mysql    mysql         451 May  3 16:43 /var/lib/mysql/public_key.pem
   258925      4 -rw-------   1 mysql    mysql        1675 May  3 16:43 /var/lib/mysql/server-key.pem
   258927      4 -rw-r--r--   1 mysql    mysql        1107 May  3 16:43 /var/lib/mysql/server-cert.pem
   258922      4 -rw-------   1 mysql    mysql        1675 May  3 16:43 /var/lib/mysql/ca-key.pem
   258928      4 -rw-------   1 mysql    mysql        1675 May  3 16:43 /var/lib/mysql/client-key.pem
   258924      4 -rw-r--r--   1 mysql    mysql        1107 May  3 16:43 /var/lib/mysql/ca.pem
   258918      4 -rw-------   1 mysql    mysql        1679 May  3 16:43 /var/lib/mysql/private_key.pem

Эти файлы представляют собой пары ключей и сертификатов для центра сертификации (начиная с «ca»), процесса сервера MySQL (начиная с «сервера») и для клиентов MySQL (начиная с «клиента»). Кроме того, файлыprivate_key.pem иpublic_key.pem используются MySQL для безопасной передачи паролей, когда SSL не используется.

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

[[шаг-3 -—- enable-ssl-connections-on-the-mysql-server]] == Шаг 3 - Включение SSL-соединений на сервере MySQL

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

Вместо этого включите SSL, перезапустив службу MySQL:

sudo systemctl restart mysql

После перезапуска откройте новый сеанс MySQL, используя ту же команду, что и раньше. Клиент MySQL автоматически попытается подключиться с использованием SSL, если это поддерживается сервером:

mysql -u root -p -h 127.0.0.1

Давайте еще раз посмотрим на ту же информацию, которую мы запрашивали в прошлый раз. Проверьте значения переменных, связанных с SSL:

SHOW VARIABLES LIKE '%ssl%';
Output+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+
9 rows in set (0.00 sec)

Переменныеhave_openssl иhave_ssl теперь читаютYES вместоDISABLED. Кроме того, переменныеssl_ca,ssl_cert иssl_key были заполнены именами соответствующих файлов, которые мы только что сгенерировали.

Далее, проверьте детали подключения еще раз:

\s
Output--------------
. . .
SSL:            Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection:      127.0.0.1 via TCP/IP
. . .
--------------

На этот раз отображается конкретный шифр SSL, указывающий, что SSL используется для защиты соединения.

Выход обратно в оболочку:

exit

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

[[step-4 -—- configuring-secure-connections-for-remote-clients]] == Шаг 4. Настройка безопасных подключений для удаленных клиентов

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

В настоящее время сервер MySQL настроен на прием SSL-соединений от клиентов. Тем не менее, он по-прежнему будет разрешать незашифрованные соединения по запросу клиента. Мы можем изменить это, включив опциюrequire_secure_transport. Это требует, чтобы все соединения были сделаны либо с SSL, либо с локальным сокетом Unix. Поскольку сокеты Unix доступны только изнутри самого сервера, единственная опция подключения, доступная удаленным пользователям, будет с SSL.

Чтобы включить этот параметр, откройте файл конфигурации MySQL в предпочитаемом вами текстовом редакторе. Здесь мы будем использоватьnano:

sudo nano /etc/mysql/my.cnf

Внутри будут две директивы!includedir, которые используются для создания дополнительных файлов конфигурации. Вы должны добавить свою собственную конфигурациюbeneath в эти строки, чтобы она перекрывала любые конфликтующие настройки, найденные в этих дополнительных файлах конфигурации.

Начните с создания раздела[mysqld], предназначенного для серверного процесса MySQL. Под заголовком этого раздела установитеrequire_secure_transport наON, что заставит MySQL разрешать только безопасные соединения:

/etc/mysql/my.cnf

. . .

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]
# Require clients to connect either using SSL
# or through a local socket file
require_secure_transport = ON

По умолчанию MySQL настроен только на прослушивание соединений, которые исходят от127.0.0.1, IP-адреса обратной связи, представляющегоlocalhost. Это означает, что MySQL настроен на прослушивание только тех соединений, которые исходят от компьютера, на котором установлен сервер MySQL.

Чтобы MySQL мог прослушивать внешние подключения, вы должны настроить его для прослушивания подключений по IP-адресуexternal. Для этого вы можете добавить параметрbind-address и указать его на0.0.0.0, IP-адрес с подстановочными знаками, который представляет все IP-адреса. По сути, это заставит MySQL прослушивать соединения на каждом интерфейсе:

/etc/mysql/my.cnf

. . .

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

[mysqld]
# Require clients to connect either using SSL
# or through a local socket file
require_secure_transport = ON
bind-address = 0.0.0.0

[.note] #Note: Вы также можете установитьbind-address на свой общедоступный IP-адресMySQL server’s. Однако вам нужно будет не забыть обновить файлmy.cnf, если вы когда-либо переносите свою базу данных на другой компьютер.
#

После добавления этих строк сохраните и закройте файл. Если вы использовалиnano для редактирования файла, вы можете сделать это, нажавCTRL+X,Y, затемENTER.

Затем перезапустите MySQL, чтобы применить новые настройки:

sudo systemctl restart mysql

Убедитесь, что MySQL прослушивает0.0.0.0 вместо127.0.0.1, набрав:

sudo netstat -plunt

Вывод этой команды будет выглядеть так:

OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3306      0.0.0.0:*               LISTEN      13317/mysqld
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1293/sshd
tcp6       0      0 :::22                   :::*                    LISTEN      1293/sshd

0.0.0.0, выделенный в приведенных выше выходных данных, указывает на то, что MySQL прослушивает соединения на всех доступных интерфейсах.

Затем разрешите подключения MySQL через брандмауэр вашего сервера. Добавьте исключение в правилаufw, набрав:

sudo ufw allow mysql
OutputRule added
Rule added (v6)

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

[[step-5 -—- create-a-special-mysql-user]] == Шаг 5. Создание специального пользователя MySQL

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

Чтобы создать такого пользователя, снова войдите в MySQL как пользовательroot:

mysql -u root -p

В командной строке создайте нового удаленного пользователя с помощью командыCREATE USER. Вы можете назвать этого пользователя как хотите, но в этом руководстве мы называем егоmysql_user. Обязательно укажите IP-адрес вашего клиентского компьютера в части спецификации пользователя, связанной с хостом, чтобы ограничить соединения с этим компьютером и заменитьpassword безопасным паролем по вашему выбору. Кроме того, для некоторой избыточности на случай, если параметрrequire_secure_transport будет отключен в будущем, укажите, что этому пользователю требуется SSL, включив предложениеREQUIRE SSL, как показано здесь:

CREATE USER 'mysql_user'@'your_mysql_client_IP' IDENTIFIED BY 'password' REQUIRE SSL;

Затем предоставьте новым пользователям разрешения для любых баз данных или таблиц, к которым они должны иметь доступ. Для демонстрации создайте базу данныхexample:

CREATE DATABASE example;

Затем предоставьте вашему новому пользователю доступ к этой базе данных и всем ее таблицам:

GRANT ALL ON example.* TO 'mysql_user'@'your_mysql_client_IP';

Затем удалите привилегии для немедленного применения этих настроек:

FLUSH PRIVILEGES;

Затем выйдите обратно в оболочку, когда закончите:

exit

Ваш сервер MySQL теперь настроен на разрешение подключений от вашего удаленного пользователя. Чтобы проверить, что вы можете успешно подключиться к MySQL, вам необходимо установить пакетmysql-client наMySQL client.

Войдите на свой клиентский компьютер сssh

ssh sammy@your_mysql_client_ip

Затем обновите индекс пакета клиентского компьютера:

sudo apt update

И установитеmysql-client с помощью следующей команды:

sudo apt install mysql-client

При появлении запроса подтвердите установку, нажавENTER.

После завершения установки пакета APT выполните следующую команду, чтобы проверить, можете ли вы успешно подключиться к серверу. Эта команда включает параметр пользователя-u для указанияmysql_user и параметр-h для указания IP-адресаMySQL server’s:

mysql -u mysql_user -p -h your_mysql_server_IP

После отправки пароля вы будете авторизованы на удаленном сервере. Используйте\s, чтобы проверить статус сервера и убедиться, что ваше соединение безопасно:

\s
Output--------------
. . .
SSL:         Cipher in use is DHE-RSA-AES256-SHA
. . .
Connection:      your_mysql_server_IP via TCP/IP
. . .
--------------

Выход обратно в оболочку:

exit

Вы подтвердили, что можете подключиться к MySQL через SSL. Однако вы еще не подтвердили, что сервер MySQL отклоняет небезопасные соединения. Чтобы проверить это, попробуйте подключиться еще раз, но на этот раз добавьте--ssl-mode=disabled к команде входа в систему. Это проинструктируетmysql-client попытаться установить незашифрованное соединение:

mysql -u mysql_user -p -h mysql_server_IP --ssl-mode=disabled

После ввода пароля при запросе в вашем соединении будет отказано:

OutputERROR 1045 (28000): Access denied for user 'mysql_user'@'mysql_server_IP' (using password: YES)

Это показывает, что SSL-соединения разрешены, а незашифрованные соединения отклонены

На этом этапе ваш сервер MySQL настроен для приема безопасных удаленных подключений. Вы можете остановиться здесь, если это удовлетворяет вашим требованиям безопасности, но есть некоторые дополнительные элементы, которые вы можете использовать для повышения безопасности и доверия между двумя серверами.

[[шаг-6 -—- optional-configuring-validation-for-mysql-connections]] == Шаг 6 - (Необязательно) Настройка проверки для подключений MySQL

В настоящее время ваш сервер MySQL настроен с сертификатом SSL, подписанным локально сгенерированным центром сертификации (CA). Сертификата сервера и пары ключей достаточно для обеспечения шифрования входящих соединений.

Однако вы еще не полностью используете доверительные отношения, которые может предоставить центр сертификации. Распространяя сертификат CA клиентам, а также сертификат клиента и ключ, обе стороны могут предоставить доказательство того, что их сертификаты были подписаны доверенным центром сертификации. Это может помочь предотвратить подделку соединений от вредоносных серверов.

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

[.Примечание]##

Note: Процесс передачи сертификата CA, сертификата клиента и ключа клиента клиенту MySQL, описанный в следующих параграфах, включает отображение содержимого каждого файла с помощьюcat, копирование этого содержимого в буфер обмена и вставку его в новый файл на клиентском компьютере. Хотя можно скопировать эти файлы напрямую с помощью такой программы, какscp илиsftp, для этого также потребуетсяset up SSH keys для обоих серверов, чтобы они могли обмениваться данными по SSH.

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

Начните с создания каталога наMySQL client в домашнем каталоге вашего пользователя без полномочий root. Назовите этот каталогclient-ssl:

mkdir ~/client-ssl

Поскольку ключ сертификата является конфиденциальным, заблокируйте доступ к этому каталогу, чтобы только текущий пользователь мог получить к нему доступ:

chmod 700 ~/client-ssl

НаMySQL server отобразите содержимое сертификата CA, набрав:

sudo cat /var/lib/mysql/ca.pem
Output-----BEGIN CERTIFICATE-----

. . .

-----END CERTIFICATE-----

Скопируйте весь вывод, включая строкиBEGIN CERTIFICATE иEND CERTIFICATE, в буфер обмена.

НаMySQL client создайте файл с тем же именем внутри нового каталога:

nano ~/client-ssl/ca.pem

Внутри вставьте скопированное содержимое сертификата из буфера обмена. Сохраните и закройте файл, когда вы закончите.

Затем отобразите сертификат клиента наMySQL server:

sudo cat /var/lib/mysql/client-cert.pem
Output-----BEGIN CERTIFICATE-----

. . .

-----END CERTIFICATE-----

Скопируйте содержимое файла в буфер обмена. Опять же, не забудьте включить первую и последнюю строку.

Откройте файл с тем же именем в папкеMySQL client в каталогеclient-ssl:

nano ~/client-ssl/client-cert.pem

Вставьте содержимое из буфера обмена. Сохраните и закройте файл.

Наконец, отобразите содержимое файла клиентского ключа наMySQL server:

sudo cat /var/lib/mysql/client-key.pem
Output-----BEGIN RSA PRIVATE KEY-----

. . .

-----END RSA PRIVATE KEY-----

Скопируйте отображаемое содержимое, включая первую и последнюю строку, в буфер обмена.

НаMySQL client откройте файл с тем же именем в каталогеclient-ssl:

nano ~/client-ssl/client-key.pem

Вставьте содержимое из буфера обмена. Сохраните и закройте файл.

Клиентский компьютер теперь имеет все учетные данные, необходимые для доступа к серверу MySQL. Однако сервер MySQL по-прежнему не настроен на использование доверенных сертификатов для клиентских подключений.

Чтобы изменить это, снова войдите в учетную запись MySQLroot наMySQL server:

mysql -u root -p

Отсюда измените требования безопасности для вашего удаленного пользователя. Вместо предложенияREQUIRE SSL примените предложениеREQUIRE X509. Это подразумевает всю безопасность, обеспечиваемую предложениемREQUIRE SSL, но дополнительно требует, чтобы подключающийся клиент представил сертификат, подписанный центром сертификации, которому доверяет сервер MySQL.

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

ALTER USER 'mysql_user'@'mysql_client_IP' REQUIRE X509;

Затем очистите изменения, чтобы убедиться, что они применяются немедленно:

FLUSH PRIVILEGES;

Вернитесь обратно в оболочку, когда закончите:

exit

После этого проверьте, можете ли вы проверять обе стороны при подключении.

НаMySQL client сначала попробуйте подключиться без предоставления клиентских сертификатов:

mysql -u mysql_user -p -h mysql_server_IP
OutputERROR 1045 (28000): Access denied for user 'mysql_user'@'mysql_client_IP' (using password: YES)

Как и ожидалось, сервер отклоняет соединение, когда клиентский сертификат не представлен.

Теперь подключитесь, используя параметры--ssl-ca,--ssl-cert и--ssl-key, чтобы указать на соответствующие файлы в каталоге~/client-ssl:

mysql -u mysql_user -p -h mysql_server_IP --ssl-ca=~/client-ssl/ca.pem --ssl-cert=~/client-ssl/client-cert.pem --ssl-key=~/client-ssl/client-key.pem

Вы предоставили клиенту соответствующие сертификаты и ключи, поэтому эта попытка будет успешной:

Выйдите из системы, чтобы восстановить доступ к сеансу оболочки:

exit

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

Внутри вашего домашнего каталога на машинеMySQL client создайте скрытый файл конфигурации с именем~/.my.cnf:

nano ~/.my.cnf

Вверху файла создайте раздел под названием[client]. Ниже добавьте параметрыssl-ca,ssl-cert иssl-key и укажите их на соответствующие файлы, которые вы скопировали с сервера. Это будет выглядеть так:

~/.my.cnf

[client]
ssl-ca = ~/client-ssl/ca.pem
ssl-cert = ~/client-ssl/client-cert.pem
ssl-key = ~/client-ssl/client-key.pem

Параметрssl-ca указывает клиенту проверить, что сертификат, представленный сервером MySQL, подписан центром сертификации, на который вы указали. Это позволяет клиенту доверять тому, что он подключается к доверенному серверу MySQL. Аналогичным образом, параметрыssl-cert иssl-key указывают на файлы, необходимые для доказательства серверу MySQL, что он также имеет сертификат, подписанный тем же центром сертификации. Это понадобится вам, если вы хотите, чтобы сервер MySQL проверял, что клиенту также доверяет ЦС.

Сохраните и закройте файл, когда вы закончите.

Теперь вы можете подключиться к серверу MySQL, не добавляя в командной строке параметры--ssl-ca,--ssl-cert и--ssl-key:

mysql -u remote_user -p -h mysql_server_ip

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

Заключение

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

Related