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

MariaDB, TLS и подключение localhost

У меня CentOS 8 с MariaDB (10.3.17).
Сервер настроен с использованием TLS, и я настроил сервер для использования 2-Way TLS, следуя примерам MariaDB: https://mariadb.com/kb/en/securing-connections-for-client-and-server/#enables-one-way-tls-for-mariadb-clients

Однако я не могу заставить работать 2-Way TLS, когда использую localhost подключение.

Итак, что у меня есть:

mariadb-server

port = 3306
ssl_cert = /etc/pki/tls/certs/dbsrv.example.com_crt.pem
ssl_key = /etc/pki/tls/private/dbsrv.example.com_key.pem
ssl_ca  = /etc/pki/tls/certs/dbsrv.example.com_chain.pem
ssl-cipher = kEECDH:+kEECDH+SHA:kEDH:+kEDH+SHA:+kEDH+CAMELLIA:kECDH:+kECDH+SHA:kRSA:+kRSA+SHA:+kRSA+CAMELLIA:!aNULL:!eNULL:!SSLv2:!RC4:!DES:!EXP:!SEED:!IDEA:!3DES

На клиенте у меня такое:

[client]
default-character-set = utf8mb4
ssl_cert = /etc/pki/tls/certs/dbsrv.example.com_crt.pem
ssl_key = /etc/pki/tls/private/dbsrv.example.com_key.pem
ssl_ca = /etc/pki/tls/certs/dbsrv.example.com_chain.pem
ssl-verify-server-cert = true

В _chain сертификаты имеют промежуточный сертификат (который подписал файлы _crt) и сертификат CA. Сертификат CA добавлен в хранилище доверенных сертификатов хоста (хотя, насколько я понимаю, он не используется из mariadb)

КН сертификатов:

subject=C ... CN = dbsrv.example.com, ...
subject=C ... CN = jumphost.example.com, ...
subject=C ... CN = MyCA-Int, ...

Теперь проблема.

Когда я подключаюсь к localhost, я получаю это сообщение об ошибке:

mysql  -u root -p
Enter password: 
ERROR 2026 (HY000): SSL connection error: Validation of SSL server certificate failed

Но если я подключаюсь через TCP, он работает:

mysql -h dbsrv.example.com -u root -p      
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 30
Server version: 10.3.17-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 10.3.17-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          30
Current database:
Current user:           root@dbsrv.example.com
SSL:                    Cipher in use is TLS_AES_256_GCM_SHA384
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.3.17-MariaDB MariaDB Server
Protocol version:       10
Connection:             dbsrv.example.com via TCP/IP
...

Если я удалю ssl-verify-server-cert = true из конфигурации клиента он тоже работает, но это не то, что мне нужно.

mysql  -u root -p              
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.3.17-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 10.3.17-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          31
Current database:
Current user:           root@localhost
SSL:                    Cipher in use is TLS_AES_256_GCM_SHA384
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.3.17-MariaDB MariaDB Server
Protocol version:       10
Connection:             Localhost via UNIX socket

----------------------------

```bash
mysql -h dbsrv.example.com -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.3.17-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> \s
--------------
mysql  Ver 15.1 Distrib 10.3.17-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          32
Current database:
Current user:           root@dbsrv.example.com
SSL:                    Cipher in use is TLS_AES_256_GCM_SHA384
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MariaDB
Server version:         10.3.17-MariaDB MariaDB Server
Protocol version:       10
Connection:             dbsrv.example.com via TCP/IP

Итак, как я могу заставить его работать с localhost подключение тоже?