Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSL连接可用于mysql客户端,但不能用于perl DBI:MariaDB_Perl_Ssl_Mariadb_Dbi - Fatal编程技术网

SSL连接可用于mysql客户端,但不能用于perl DBI:MariaDB

SSL连接可用于mysql客户端,但不能用于perl DBI:MariaDB,perl,ssl,mariadb,dbi,Perl,Ssl,Mariadb,Dbi,我使用自签名证书设置了一个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

我使用自签名证书设置了一个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(并在服务器上强制实施),我就会得到:

当我用openssl检查证书时,我得到

$ openssl verify ca-cert.pem client-cert.pem server-cert.pem 

error 18 at 0 depth lookup: self signed certificate
证书确实是自签名的,我希望保持这种方式

如果我使用“mariadb\u ssl\u verify\u server\u cert=0”,我会得到

要使TLS连接从Perl工作,我需要做哪些更改

我复制connect sub中的代码行以供参考。一个非常类似的代码,用于在使用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});
failed: SSL connection error: Enforcing SSL encryption is not supported without mariadb_ssl_verify_server_cert=1
$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});