MySQL имеет поддержку SSL, однако в конфигурационном файле /wa-config/db.php отсутствует возможность передачи ключей сертификата. Если посмотреть на реализацию метода подключение к БД, допустим адаптера Mysqli, то увидим, что такая возможность в фреймворке отсуствует:
public function connect($settings)
{
$host = $settings['host'];
$port = isset($settings['port']) ? $settings['port'] : ini_get("mysqli.default_port");
$handler = @new mysqli($host, $settings['user'], $settings['password'], $settings['database'], $port);
...
}
Использования SSL поможет разделить основной сервер, от сервера БД.
3 комментария
Крайне редко встречал боевые использования этого. Более того, вы в топике не высказали предложение. Идея понятна, но смысл туманен...
И кстати сконфигурировать SSL вMYSQL насколько я помню без root практически невозможно, а это означает, что 80% установок эту фишку не смогут использовать.
Согласен с Вами, данный функционал необходим для узкого круга, но он необходим для серьёзных проектов, которые задумываются:
- о защите трафика при общении сервера с сервером БД.
- о защите БД, в случаи аппаратных сбоев.
- об оптимизации скорости ответа.
Предложение:
В конф файле db.php, дать возможность указывать ключи SSL, что-то типа:
В адаптере делать проверку, если используется поле, подключаться с использованием SSL
В современных фреймворках PHP, такая возможность везде есть, я не думаю, что она будет лишней в fw webasyst, там правки минимальны.
Немного добавлю.
К защите БД в случае аппаратных сбоев и оптимизации скорости ответа это не имеет никакого отношения.
Речь только о защите трафика и только тогда, когда никак нельзя создать приватный канал для соединения серверов в пределах полностью подконтрольных физических или виртуальных сетей.
Обычно сначала создается канал (vlan, физика, туннелирование и т.п.), а потом внутрь него уже заворачивается любой нужный вам трафик и в таком случае на SSL как правило уже наплевать т.к. двойная работа.
Разделения групп web-серверов от серверов (кластеров) БД в пределах одного или нескольких ЦОД и так используются в крупных проектах повсеместно, но с таким учетом, что между серверами минимальное время отклика (чем меньше тем лучше) т.е. минимальное кол-во узлов маршрутизации и хорошая пропусная способность (гарантированная скорость).
В случае негарантированных параметров передачи данных между узлами (web и db) использование такого разделения в крупных проектах недопустимо. По крайней мере я бы на такое не подписался при наличии любых других возможностей решения задачи.
Собственно даже storage (nas) часто не лежат в одной корзине сервера, а распределены по ЦОД (одному или нескольким) физически, а тут какой-то mysql ssl. :)