PHP mysqli не может распознать SSL-сертификаты для удаленной базы данных

0

Я хочу подключиться к удаленной базе данных 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% уверен, что мои сертификаты и пути верны. Как я могу его исправить и установить соединение?

Теги:
ssl

1 ответ

1

В моем случае я должен был установить MYSQLI_OPT_SSL_VERIFY_SERVER_CERT в false до того, как все это сработает.

Вместо этого попробуйте следующее:

mysqli_options ($connection, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, false);

Надеюсь, что это сработает, а также для будущих читателей.

  • 1
    Не сделает ли это соединение уязвимым для атаки «человек посередине»?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню