Я пытаюсь настроить 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?
Документация RDS фактически объясняет, почему это происходит, и предполагает, что вам даже не нужен сертификат CA:
Amazon RDS начала обновлять SSL-сертификаты во всех экземплярах БД 23 марта 2015 года, но не инициировала перезагрузку экземпляров. При выполнении этих обновлений не происходит никакого воздействия или времени простоя, и во многих ситуациях мы будем выполнять обновление в вашем окне обслуживания. Amazon RDS не будет обновлять сертификат для ваших экземпляров, если вы уже выполнили обновление. Также обратите внимание, что Amazon RDS не обновляет сертификаты в AWS GovCloud (США) и в Китае (Пекин).
Независимо от того, обновили ли вы сертификат вручную или обновили сертификат Amazon RDS, экземпляр БД должен быть перезагружен, чтобы новый сертификат вступил в силу. Вы можете решить, когда вы хотите вручную перезагрузить экземпляр БД, но вы должны обновить сертификат и перезагрузить экземпляр до истечения срока действия старого сертификата (rds-ca-2010) 3 апреля 2015 года.
Вы можете проверить полномочия центра сертификации (CA), используемые вашим экземпляром DB, используя консоль Amazon RDS. ЦС указан в разделе «Безопасность и сеть» данных вашего экземпляра базы данных. Если ваш экземпляр показывает rds-ca-2015, то новый сертификат успешно применяется. Вам все равно необходимо перезагрузить экземпляр базы данных и обновить клиентское приложение, чтобы использовать новый сертификат SSL.
Если консоль Amazon RDS показывает ваш экземпляр CA как rds-ca-2010, то новый сертификат еще не был применен к вашему экземпляру базы данных. Используйте следующие инструкции для обновления сертификата SSL в экземплярах базы данных.
Третий параметр по существу игнорируется клиентом. Я ставлю, установив третий параметр в NULL
, нет смысла вызывать mysqli::ssl_set()
если все параметры равны нулю.
Попробуйте полностью удалить этот вызов функции.