gpt4 book ai didi

php - 通过 SSL 与 PHP mysqli 的 Mysql 连接

转载 作者:行者123 更新时间:2023-11-29 01:55:03 27 4
gpt4 key购买 nike

我正在尝试为两个 VPS 服务器设置 PHP mysqli 到 MariaDB 数据库的连接,并且由于它是通过公共(public)网络进行的,因此需要加密通信。

目前我可以正常通过命令行 mysql 客户端从客户端服务器连接到数据库服务器,并且我已经通过 tcpdump 检查连接是否加密。但是由于某种原因我无法弄清楚 PHP 部分。它是相对基本的 nginx + php5-fpm + mariadb 设置,但 mysql 在非默认端口上工作。Debian Jessie,Php5 5.6.7,Mariadb 10.0.16,nginx 1.6.2

这是测试脚本:

   <?php
$DB_NAME = '';
$DB_HOST = '111.111.111.111';
$DB_USER = 'username';
$DB_PASS = 'password';

$mysqli = mysqli_init();
if (!$mysqli) {
die('mysqli_init failed');
}
//have tried witha and without the following with multiple variations
$mysqli->ssl_set(NULL, NULL, NULL,'/etc/mysql/ssl/',NULL);
if (!$mysqli->real_connect($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME, 11111, NULL,MYSQLI_CLIENT_SSL )) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
$query = "SHOW STATUS LIKE 'ssl_cipher'";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
print_r($row);
}
}
else {
echo 'NO RESULTS';
}
mysqli_close($mysqli);
?>

我在没有 ssl_set 的情况下遇到的主要错误:

2015/07/11 15:58:34 [error] 2857#0: *374 FastCGI sent in stderr: "PHP message: PHP Warning:  mysqli::real_connect(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /srv/www/test.php on line 15
PHP message: PHP Warning: mysqli::real_connect(): Cannot connect to MySQL by using SSL in /srv/www/test.php on line 15
PHP message: PHP Warning: mysqli::real_connect(): [2002] (trying to connect via tcp://192.168.130.123:42139) in /srv/www/test.php on line 15
PHP message: PHP Warning: mysqli::real_connect(): (HY000/2002): in /srv/www/test.php on line 15".....

如有任何想法,我们将不胜感激。这真的要了我的命。

最佳答案

可能是由于 PHP 5.6 中所做的更改导致出现此问题。我猜你使用的是自签名证书?如果您的数据库默认启用 peer_name 验证,则无法在 PHP 中禁用它。因此,在生成证书时,您必须为每个证书使用正确的“通用名称”:

CA: 主机名服务器:FQND,例如主机名.example.com客户:某某

重要的部分是服务器证书,其中 Common Name 必须与您要连接的主机相同。

关于php - 通过 SSL 与 PHP mysqli 的 Mysql 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31357560/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com