Назад | Перейти на главную страницу

PHP в MySQL с использованием SSL

У меня есть удаленный сервер MySQL, который требует от меня использования SSL для соединений. Я могу подключиться к нему с помощью своего терминала. Но когда я пытаюсь подключиться к нему с помощью PHP, я получаю следующую ошибку:

SSL3_GET_RECORD:wrong version number

Кажется, что рукопожатие OPENSSL не удается, и причина может заключаться в том, что мой PHP пытается подключиться к нему с помощью SSL3. Сервер MySQL поддерживает только TLSv1.2. Есть ли способ заставить PHP подключаться с помощью TLSv1.2?

Вот мой код, используемый для подключения:

<?php

ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '1');
error_reporting (E_ALL|E_STRICT);

$db = mysqli_init();
mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);

$db->ssl_set(NULL, NULL, '/path/to/ca-cert.pem' , NULL, NULL);
$link = mysqli_real_connect ($db, 'hostname', 'user', 'password', 'dbname', 3306, NULL, MYSQLI_CLIENT_SSL);
if (!$link)
{
    die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n");
} else {
    $res = $db->query('SHOW TABLES;');
    print_r ($res);
    $db->close();
}    
?>

Что я пробовал и возможные проблемы:

  1. Похоже на несоответствие версии openssl. Я могу подключиться, используя свой терминал, а не PHP, поэтому я проверил свою версию openssl в терминале с той, которую я получаю с помощью phpinfo (), они были одинаковыми
  2. PHP, возможно, использует SSL3 для подключения, а сервер поддерживает только TLSv1.2, я не смог найти способ принудительно подключиться PHP к MySQL с помощью TLSv1.2
  3. Я пытался наблюдать за рукопожатием с помощью tcpdump / Wireshark, но я не думаю, что процесс даже запускается из-за несоответствия версий.
  4. Я подтвердил с помощью «openssl s_client -debug», что сервер не поддерживает SSL3, что заставляет меня думать, что это проблема на моем компьютере, но не уверен.
  5. Причина, по которой я говорю, что мой клиент может использовать SSL3, связана с SSL3_GET_RECORD, я не знаю наверняка, прав ли я и в этом.

Короче, Help!