У меня есть сервер MariaDB, настроенный с самозаверяющими сертификатами для подключения с использованием TLS.Это работает, когда я соединяюсь с соответствующим клиентом
$ mysql -u xxxx -h xx.xx.xx.xx -p
\s shows:
mysql Ver 15.1 Distrib 10.1.37-MariaDB, for debian-linux-gnu (x86_64)
SSL: Cipher in use is DHE-RSA-AES256-SHA
.my.cnf содержит:
$ cat ~/.my.cnf
[client]
ssl-cert=/---path-deleted---/client-cert.pem
ssl-key=/---path-deleted---/client-key.pem
Проблема: мне не удается подключиться из сценария Perl с этими настройками,Без SSL скрипт работает.Как только я включаю SSL в сценарии (и применяю его на сервере), я получаю:
failed: SSL connection error: ASN: bad other signature confirmation
Когда я проверяю сертификаты с помощью openssl, я получаю
$ openssl verify ca-cert.pem client-cert.pem server-cert.pem
error 18 at 0 depth lookup: self signed certificate
сертификаты действительно являются самозаверяющими, и я хочу сохранить их таким образом.
Если я использую "mariadb_ssl_verify_server_cert = 0", я получу
failed: SSL connection error: Enforcing SSL encryption is not supported without mariadb_ssl_verify_server_cert=1
Что мне нужно изменить, чтобы иметьTLS-соединение работает с Perl?
Я копирую строки кода, которые у меня есть в моем саб-коннекторе для справки.Очень похожий код, используемый для работы в более старой системе с mysql (не mariadb), использующий просто mysql_ssl = 1 IIRC:
$self->{dsn} = "DBI:MariaDB:database=$database;host=$db_host;mariadb_ssl=1;".
"mariadb_ssl_verify_server_cert=1;".
"mariadb_ssl_ca_file=/---path---/ca-key.pem;".
"mariadb_ssl_client_key=/---path---/client-key.pem;".
"mariadb_ssl_client_cert=/---path---/client-cert.pem";
$self->{dbh} = DBI->connect($self->{dsn}, $db_user, $db_passwd,
{'RaiseError' => 1, 'PrintError' => 1, AutoCommit => 1});