Я хочу подключиться к удаленной базе данных mysql с помощью функции mysqli. Для подключения также требуются SSL-сертификаты. Поэтому мой код выглядит так:
$db = array(
"host" => "host",
"user" => "user",
"password" => "password",
"dbName" => "dbName"
);
ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '1');
error_reporting (E_ALL|E_STRICT);
$connection = mysqli_init();
mysqli_options ($connection, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
$connection->ssl_set('/usr/local/certs/client-key.pem',
'/usr/local/certs/client-cert.pem', '/usr/local/certs/server-ca.pem', NULL, NULL);
$link = mysqli_real_connect ($connection, $db['host'],
$db['user'], $db['password'], $db['dbName'], 3306, NULL, MYSQLI_CLIENT_SSL);
if (!$link)
{
die ('Connect error (' . mysqli_connect_errno() . '): '
. mysqli_connect_error() . "\n");
}
else
{
$response = $connection->query('SHOW TABLES;');
$this->output->writeln($response);
$connection->close();
}
И затем я получаю эту ошибку:
PHP Warning: mysqli_real_connect(): Peer certificate CN='[project
name]' did not match expected CN='[IP address]'
Я борюсь с этой ошибкой в течение нескольких дней. Я также на 100% уверен, что мои сертификаты и пути верны. Как я могу его исправить и установить соединение?
В моем случае я должен был установить MYSQLI_OPT_SSL_VERIFY_SERVER_CERT в false до того, как все это сработает.
Вместо этого попробуйте следующее:
mysqli_options ($connection, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false);
Надеюсь, что это сработает, а также для будущих читателей.