Как подключиться к Amazon RDS через SSL?

Я пытаюсь настроить соединение SSL с базой данных MySQL, размещенной через Amazon RDS. Я запутался, как подключиться.

Согласно документации Amazon мне нужно загрузить сертификат CA под названием "rds-ca-2015-root.pem" и использовать его в моем SSL-соединении. Я установил пользователя базы данных, с которым я подключаюсь, чтобы требовать SSL.

В PHP я включаю следующий код для инициирования соединения:

$mysqli = mysqli_init();
mysqli_options($mysqli, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
$mysqli->ssl_set(NULL, NULL, "/path/to/pem", NULL, NULL);
$mysqli->real_connect("host", "username", "password", "name", 3306, NULL, MYSQLI_CLIENT_SSL);

Однако, независимо от того, какой путь я укажу в качестве третьего параметра в ssl_set() (даже если путь недопустим), SSL-соединение успешно установлено. Третий параметр просто не может быть установлен в NULL.

Я проверяю это, выполнив этот запрос: SHOW STATUS LIKE 'Ssl_cipher';. Вывод проверяет, что соединение зашифровано (Ssl_cipher = > AES256-SHA).

Может кто-нибудь объяснить мне, как это работает? Я смущен, почему соединение продолжает успешно работать, когда путь неверен. Как проверяется сервер RDS?

Ответы

Ответ 1

Документация RDS фактически объясняет, почему это происходит, и предполагает, что вам даже не нужен сертификат CA:

Amazon RDS начала обновлять SSL-сертификаты во всех экземплярах DB 23 марта 2015 года, но не инициировал перезагрузку экземпляров. нет оперативное воздействие или простои возникают, когда эти обновления и во многих ситуациях мы выполним обновление в вашем окно обслуживания. Amazon RDS не будет обновлять сертификат для ваши экземпляры, если вы уже выполнили обновление. Также обратите внимание что Amazon RDS не обновляет сертификаты в AWS GovCloud (США) и Китай (Пекин).

Независимо от того, вручную ли вы обновляете сертификат или Amazon RDS обновил сертификат, экземпляр DB должен быть перезагружен для новый сертификат вступает в силу. Вы можете решить, когда захотите вручную перезагрузите экземпляр БД, но вы должны обновить сертификат и перезагрузите экземпляр перед старым сертификатом (rds-ca-2010) истекает 3 апреля 2015 года.

Вы можете проверить, что центр сертификации (CA) используется вашей БД с использованием консоли Amazon RDS. ЦС указан в Раздел "Безопасность и сеть" данных вашего экземпляра базы данных. Если ваш пример показывает rds-ca-2015, затем новый сертификат был успешно применяется. Вам все равно нужно перезагрузить экземпляр базы данных и обновите клиентское приложение, чтобы использовать новый сертификат SSL.

Если консоль Amazon RDS показывает ваш экземпляр CA как rds-ca-2010, тогда новый сертификат не был применен к экземпляру базы данных все же. Используйте следующие инструкции для обновления сертификата SSL на ваши экземпляры базы данных.

Третий параметр по существу игнорируется клиентом. Я ставлю, установив третий параметр в NULL, нет смысла вызывать mysqli::ssl_set(), если все параметры являются нулевыми.

Попробуйте полностью удалить этот вызов функции.