Подключение phpMyAdmin к серверу MySQL через SSL

Я могу лаять не на то дерево ... Однако у меня есть сервер MySQL, который принимает соединения только от клиента с действующим сертификатом SSL (см. эта ссылка). Это отлично работает, например, с Rails. У меня есть база данных на одном сервере и приложение Rails, которое подключается с помощью сертификата клиента. Может не самый быстрый, но работает.

Конфигурация в database.yml выглядит примерно так:

sslkey: /path/to/client-key.pem
sslcert: /path/to/client-cert.pem
sslca: /path/to/ca-cert.pem

Проблема в том, что я хотел бы разместить phpMyAdmin на том же сервере, что и приложение Rails. Я думаю, что phpMyAdmin просто более ограничен в возможностях подключения, потому что я не могу найти способ использовать клиентский сертификат для подключения. Но что мне показалось странным, так это то, что поиск в Google ответов по этой теме не принес много результатов (что заставляет меня задаться вопросом, не придерживаюсь ли я неправильного подхода к этому).

Очевидно, я могу легко настроить сам phpMyAdmin для размещения за сертификатом SSL (который будет шифровать запросы между клиентским браузером и моим сервером phpMyAdmin), но я хочу, чтобы соединение phpMyAdmin <-> db также было зашифровано.

Это возможно? Это плохой выбор дизайна? Есть ли лучшие способы сделать это?

Спасибо,

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
4
0
9 731
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

в вашем config.inc.php добавьте эту строку после соответствующих материалов сервера:

$cfg['Servers'][$i]['ssl']=true;  

Предполагая, что ваш php и его клиент mysql настроены с учетом SSL, это должно сработать.

Хотя это, похоже, позволяет использовать SSL, похоже, что он ничего не делает для проверки подлинности на основе сертификатов.

Zoredache 01.12.2008 23:16

Вы уверены, что можете установить SSL-соединение через PHP? Имейте в виду, что my.cnf, используемый CL mysql, может не совпадать с используемым PHP. Я бы порекомендовал написать быстрый тестовый скрипт с принудительным шифрованием, чтобы убедиться, что он работает.

Stepan Mazurov 02.12.2008 00:44

Я согласен, ответа недостаточно. Место, где все говорят вам разместить сертификат SSL и указатель, находится в блоке виртуального хоста conf.d. Но это для входящего трафика. Только если доступ к вашему phpmyadmin осуществляется с IP-адреса сервера mysql, но это НЕ относится к этому примеру. Здесь мы используем phpmyadmin, чтобы выйти и сделать УДАЛЕННЫЙ запрос к УДАЛЕННОМУ серверу с локального компьютера.

Для этого phpmyadmin должен иметь настройку конфигурации, позволяющую указать, где находятся файлы cert. В противном случае я не вижу, как это будет работать. Хотя, возможно, блок виртуального хоста сработает и для исходящего трафика. Думаю, мы можем попробовать ... Я думаю, что виртуальный хост работает только для ВХОДЯЩЕГО трафика.

Я считаю, что полностью исчерпывающий ответ хорошо объяснен в документе PHPmyadmin: https://docs.phpmyadmin.net/en/latest/config.html#example-google-ssl

Вы должны следовать ему и настроить запись подключения к серверу в config.inc.php следующим образом:

// IP address of your instance
$cfg['Servers'][$i]['host'] = '8.8.8.8';
// Use SSL for connection
$cfg['Servers'][$i]['ssl'] = true;
// Client secret key
$cfg['Servers'][$i]['ssl_key'] = '../client-key.pem';
// Client certificate
$cfg['Servers'][$i]['ssl_cert'] = '../client-cert.pem';
// Server certification authority
$cfg['Servers'][$i]['ssl_ca'] = '../server-ca.pem';
// Disable SSL verification (see above note)
$cfg['Servers'][$i]['ssl_verify'] = false;

Другие вопросы по теме