Назад | Перейти на главную страницу

Как отладить SSL-соединение MariaDB?

После перехода с MySQL на более новую установку MariaDB на Debian 9 у меня возникли проблемы с подключениями SSL.

Я создал сертификат CA и установил его как на сервере, так и на клиенте. Затем я создал серверные и клиентские ключи и сертификаты, которые подписал сертификатом CA.

Что работает:

Я могу подключиться от клиента к серверу с клиентом mysql без SSL-соединений.

Я могу проверить сертификат клиента с помощью openssl:

$ openssl verify MariaDB_client.crt 

MariaDB_client.crt: OK

Я понимаю, что MariaDB использует yaSSL, но я думаю, что это все еще показывает, что сертификаты и CA верны.

На сервере у меня есть:

MariaDB> show global variables like '%ssl%';
+---------------------+--------------------------------------+
| Variable_name       | Value                                |
+---------------------+--------------------------------------+
| have_openssl        | NO                                   |
| have_ssl            | YES                                  |
| ssl_ca              | /etc/mysql/conf.d/MariaDB_ca.crt     |
| ssl_capath          |                                      |
| ssl_cert            | /etc/mysql/conf.d/MariaDB_server.crt |
| ssl_cipher          |                                      |
| ssl_crl             |                                      |
| ssl_crlpath         |                                      |
| ssl_key             | /etc/mysql/conf.d/MariaDB_server.key |
| version_ssl_library | YaSSL 2.4.4                          |
+---------------------+--------------------------------------+

Что значит не работай:

Если я добавлю файл .my.cnf со следующим содержимым в каталог $ HOME пользователя ...

[client]
ssl-ca=/--path--/MariaDB_ca.crt
ssl-cert=/--path--/MariaDB_client.crt
ssl-key=/--path--/MariaDB_client.key

... соединение не работает:

ERROR 2026 (HY000): SSL connection error: unable to verify peer checksum

В журнале сервера я нахожу (не уверен, связано ли это):

[Warning] IP address 'ip.of.connecting.client' could not be resolved: Name or service not known

Мои вопросы:

После многих часов попыток все наконец заработало.

Решающим шагом было использовать IP-адрес сервера как общее имя (CN) в сертификате сервера (на самом деле подписанный csr затем дает сертификат), а не произвольное имя хоста, как предлагают некоторые инструкции. Многие источники, которые я нашел, противоречили в этом отношении.

Я использую MariaDB, поставляемую с Debian 9, связанную с библиотекой yaSSL. Может быть, с openssl все по-другому. Они определенно отличаются от MySQL.