Использование this guide Я пытаюсь настроить MariaDB (MySQL) для использования SSL между DbServer и AppClient.MariaDB через SSL не работает, «сертификат верифицировать не удалось»
Я создал серверные и клиентские сертификаты на сервере в соответствии с руководством. Затем я скопировал три необходимые клиентские файлы AppClient и установить право собственности и права:
[[email protected] mysql]# ll /etc/pki/tls/certs/
drwxr-xr-x. 2 mysql mysql 88 Feb 9 13:31 mysql
[[email protected] mysql]# ll /etc/pki/tls/certs/mysql/
-rw-------. 1 mysql mysql 1372 Feb 9 13:31 ca-cert.pem
-rw-------. 1 mysql mysql 1230 Feb 9 14:16 client-cert.pem
-rw-------. 1 mysql mysql 1705 Feb 9 14:16 client-key.pem
Вот полный my.cnf на AppClient:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
[client]
ssl-ca=/etc/pki/tls/certs/mysql/ca-cert.pem
ssl-cert=/etc/pki/tls/certs/mysql/client-cert.pem
ssl-key=/etc/pki/tls/certs/mysql/client-key.pem
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
Далее я проверил, что порт 3306 открыт на DbServer:
[[email protected] mysql]# telnet dbserver 3306
Connected to dbserver.
Escape character is '^]'.
R
5.5.52-MariaDB
Далее я проверил MariaDB (MySQL) Ssl переменные на DbServer:
MariaDB [(none)]> show variables like '%ssl%';
+---------------+------------------------------------------+
| Variable_name | Value |
+---------------+------------------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /etc/pki/tls/certs/mysql/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /etc/pki/tls/certs/mysql/server-cert.pem |
| ssl_cipher | |
| ssl_key | /etc/pki/tls/certs/mysql/server-key.pem |
+---------------+------------------------------------------+
Далее я проверил MariaDB (MySQL) переменные Ssl на AppClient:
MariaDB [(none)]> show variables LIKE '%ssl%';
+---------------+----------+
| Variable_name | Value |
+---------------+----------+
| have_openssl | DISABLED |
| have_ssl | DISABLED |
| ssl_ca | |
| ssl_capath | |
| ssl_cert | |
| ssl_cipher | |
| ssl_key | |
+---------------+----------+
7 rows in set (0.00 sec)
Это выглядит как старт/источник проблемы.
Если я пытаюсь подключиться к DbServer от AppClient все равно:
[[email protected] mysql]# mysql -h dbserver -u ssluser -p
Enter password:
ERROR 2026 (HY000): SSL connection error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Нет Буэно.
Проверка AppClient «s с OpenSSL сертификатов ...
[[email protected] mysql]# cd /etc/pki/tls/certs/mysql/
[[email protected] mysql]# openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
Error opening certificate file server-cert.pem
139864320337824:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('server-cert.pem','r')
139864320337824:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:
unable to load certificate
client-cert.pem: OK
Для пинков, я запускал тот же самый тест OpenSSL на DbServer:
[[email protected] mysql]# openssl verify -CAfile ca-cert.pem server-cert.pem client-cert.pem
server-cert.pem: C = XX, ST = XX, L = CityName, O = MyOrganization, OU = MyGroup, CN = dbserver
error 18 at 0 depth lookup:self signed certificate
OK
client-cert.pem: OK
В учебнике упоминается только копирование ca-cert.pem
, client-cert.pem
и client-key.pem
клиенту, но провал выше указывает на отсутствующий server-cert.pem
на клиенте.
Нужно ли мне создавать сервер - * .pem-файлы на клиенте? Если да, то где они идут в файле /etc/my.cnf
?
Это самозаверяющий сертификат? Поскольку openssl сообщает вам, что проверка сертификата не удалась, это указывает, что полномочия, которые вы использовали для подписания сертификата, должны быть добавлены в ОС, на котором вы выполняете это. Я не знаю, есть ли флаг, который запрещает проверку сертификата, может быть, может помочь какой-то поиск в этом направлении? –
Он подписан сам. Все сертификаты были созданы на dbserver в документации. Обратите внимание, что openssl не прошел тест из-за отсутствия 'server-cert.pem', который не описан или не описан в учебнике. Это та часть, за которую я застрял. –
Сделал небольшой прогресс от 'cat server-cert.pem client-cert.pem> ca.pem', а затем обновил my.cnf appclient, чтобы использовать' ssl-ca = ca.pem'. Вместо ошибки SSL я получаю ошибку проверки подлинности. –