В чем разница между MYSQLI_CLIENT_SSL и MYSQLI_OPT_SSL_VERIFY_SERVER_CERT? - PullRequest
0 голосов
/ 06 января 2019

Обычно я подключаюсь к базе данных MySQL с использованием SSL:

$db = mysqli_init();
mysqli_ssl_set(
    $db,
    NULL,
    NULL,
    '/etc/ssl/my-certs/ssl-ca.crt.pem',
    NULL,
    NULL
);
mysqli_real_connect(
    $db,
    'db.example.com',
    'john',
    '123456',
    NULL,
    NULL,
    NULL,
    MYSQLI_CLIENT_SSL
);

Из того, что я понимаю, флаг MYSQLI_CLIENT_SSL необходим, чтобы mysqli::real_connect подключался к серверу с использованием SSL.

Сегодня я наткнулся на документацию для mysqli::options и заметил, что она принимает MYSQLI_OPT_SSL_VERIFY_SERVER_CERT в качестве опции, но, увы, ее описание пусто. Итак, мне интересно:

  1. Когда мне нужно добавить mysqli_options($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);?
  2. Когда мне нужно использовать флаг MYSQLI_CLIENT_SSL?
  3. Когда мне нужно будет установить их оба?

1 Ответ

0 голосов
/ 06 января 2019
  1. MYSQLI_OPT_SSL_VERIFY_SERVER_CERT (true) используется, когда вы хотите проверить сертификат сервера по известным органам, чтобы убедиться, что это соединение с доверенным хостом. Не используйте его, если у вас есть самоподписанный сертификат на сервере.

  2. MYSQLI_CLIENT_SSL всегда должен использоваться, когда вам необходимо зашифровать соединение.

  3. Когда у вас есть сертификат на mysql-сервере, предоставленный властями, и вы хотите шифрование + MITM-атака Защита используйте как MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, так и MYSQLI_CLIENT_SSL.

...