При попытке подключиться к базе данных mysql в php-7.2 с помощью ssl, это приводит к ошибке Got an error reading communication packets
SSL был установлен на сервере с помощью команды:
sudo mysql_ssl_rsa_setup --uid=mysql
До сих пор я пробовал следующие подходы:
<?php
$conn=mysqli_init();
if (!$conn){
die("mysqli_init failed");
}
$conn->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
mysqli_ssl_set($conn,NULL,NULL,"scripts/ssl/ca.pem",NULL,NULL);
if (!mysqli_real_connect($conn,"<ip-address>","<user>","<passsword>","<database>")){
die("Connect Error: " . mysqli_connect_error());
}
$sql = "SELECT * FROM accounts";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
и ...
<?php
$conn=mysqli_init();
if (!$conn){
die("mysqli_init failed");
}
mysqli_ssl_set($conn,"scripts/ssl/client-key.pem","scripts/ssl/client-cert.pem","scripts/ssl/ca.pem",NULL,NULL);
if (!mysqli_real_connect($conn,"<ip-address>","<user>","<passsword>","<database>")){
die("Connect Error: " . mysqli_connect_error());
}
$sql = "SELECT * FROM accounts";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
Я временно добавил:
$homepage = file_get_contents("scripts/ssl/client-key.pem");
echo $homepage;
к коду, который напечатал сертификат на экране, поэтому я знаю, что пути к файлам правильные.
Все файлы SSL были извлечены прямо с сервера, на котором запущен mysql, поэтому здесь также не должно быть проблем.
mysqli_connect_error()
ничего не возвращает. Единственная ошибка Got an error reading communication packets
из /var/log/mysql/error.log
Я нашел методы выше из этого вопроса о переполнении стека.
Ссылочная ссылка ссылается на эту документацию, которая лишь немного более полезна, чем официальная документация . Документация по SSL с mysqli, кажется, довольно отсутствует.
Любые предложения о том, что я делаю неправильно