SSL real_connect возвращает ноль, но код ошибки равен 0 - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть сервер веб-сайта, на котором должна быть возможность войти в базу данных. И сервер, и база данных находятся на одном и том же компьютере, поэтому обмен данными осуществляется через localhost.

Проблема состоит в том, что я пытаюсь соединить эти элементы с включенным SSL для практики. Для этого у меня есть небольшой код un PHP, который должен создать соединение после установки правильных опций. Для части SSL я создал свой собственный CA и создал две пары crts и ключей: одну пару для сервера nginx и другую для базы данных.

Когда я пытаюсь установить соединение, real_connect возвращает значение NULL, но значение errno равно 0, поэтому я не знаю, есть ли ошибка в коде или это связано с сертификатами SSL.

Если я пытаюсь установить соединение без SSL, нет проблема.

Это код PHP, который должен обрабатывать логин:

<html>
<head>
<title>MariaDB Query</title>
</head>

<body>
<?php


$server="127.0.0.1";
$user=$_POST['user'];
$pwd=$_POST['pwd'];
$db="mydb";

$mysqli = mysqli_init();
if(!$mysqli){
die("mysqli failed");
}


$mysqli->ssl_set("/etc/mysql/ssl/mariadb.key", "/etc/mysql/ssl/mariadb_cert.pem", "/etc/nginx/server_files/rootCA.crt", NULL, NULL);

if(!$mysqli->real_connect($server, $user, $pwd, $db, null, null, MYSQLI_CLIENT_SLL)){
die("Connect Error:" . mysqli_connect_error() ." : ". mysqli_connect_errno());
} else {
echo 'SUCCESS';
}
$mysqli->close();

?>
</body>
</html>

Обратите внимание, что пользователь и пароль получены с другого веб-сайта, который обрабатывает прием этих значения (веб-сайт classi c с двумя областями для ввода текста).

Спасибо за потраченное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...