Можно ли подключиться через ssl к удаленной базе данных mysql, используя php без сертификатов или ключей?

0

Допустим, у меня есть клиент, который дает мне учетные данные db, и они хотят подключиться к db с защищенным/зашифрованным. Они также включили ssl в настройках mysql. Когда они дают мне свои кредиты db, я не хочу спрашивать их о ключах и сертификатах. Так можно ли зашифровать безопасное соединение через ssl при подключении к клиентам db без этих элементов?

обновление: так после дальнейшего возиться вокруг

$db->ssl_set(NULL, NULL,'/path_to_self_signed_cert/ca.pem',NULL,'');
$db->real_connect('hostname','username','password','dbname', 
'port'socket', MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);'

это сделало меня результатом, который я хотел, после запуска этого

$db->query("SHOW STATUS LIKE 'Ssl_cipher';");

отображает алгоритм шифрования вместо того, чтобы быть пустым

  (
   [0] => Ssl_cipher
   [Variable_name] => Ssl_cipher
   [1] => DHE-RSA-AES128-SHA
   [Value] => DHE-RSA-AES128-SHA
  )

но не знаю, почему это сработало, это самоподписанный сертификат надлежащего способа сделать это?

  • 3
    Можете немного уточнить? Если база данных уже настроена правильно, сертификаты SSL должны быть действительными, и установить безопасное соединение должно быть так же просто, как использовать предоставленные вам учетные данные базы данных. Они не должны давать вам дополнительные ключи или сертификаты.
  • 0
    @rickjerrity Я думал, вам нужны какие-то сертификаты или ключи, чтобы установить безопасное зашифрованное соединение между клиентом и сервером. Есть ли php-код для проверки того, что соединение зашифровано ради здравомыслия?
Показать ещё 5 комментариев
Теги:
database
ssl
pdo

2 ответа

1

@rickjerrity я подключается к удаленному db через командную строку и проверяет состояние, запустив \s и говорит SSL: Cipher in use is DHE-RSA-AES256-SHA. Но когда я подключаюсь к одной базе данных с использованием php и используя те же учетные данные, он говорит, что шифр пуст. вот код, который я использовал для подключения к удаленному db

$db = mysqli_init();
    $db->real_connect('hostname','username','password','dbname');
    $res = $db->query("SHOW STATUS LIKE 'Ssl_cipher';");
    while ( $row = $res->fetch_array() ) {
        print_r($row);
    }
    $db->close();

и ответ

[0] => Ssl_cipher
[Variable_name] => Ssl_cipher
[1] => 
[Value] =>
0

Для безопасного соединения с db, кроме учетных данных db, не требуется сертификат или ключ на стороне клиента. PHP должен проверять целостность сертификата SSL при подключении. Любые другие методы PHP, способные проверять статус шифрования соединения, были бы разумными, как вы упомянули. Если вы укажете некоторые примеры кода, мы сможем оказать дальнейшую помощь.

  • 0
    Как упомянуто Энтони в комментарии выше, это может быть проблемой конфигурации PHP. По словам Энтони, PHP должен быть скомпилирован с OpenSSL, чтобы он действительно установил соединение TLS. Дважды проверьте, что вы можете устанавливать любые соединения TLS с любыми действующими веб-сайтами, используя PHP.

Ещё вопросы

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