Я пытаюсь настроить SSL-соединение с базой данных MySQL, размещенной через Amazon RDS. Я смущен, как подключиться.Как подключиться к Amazon RDS через SSL?
Согласно documentation от 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?
Если вы используете это на машине Unix в зависимости от вкуса и конфигурации OpenSSL, которые вы используете, есть каталог, в котором хранятся сертификаты вашей системы. Openssl будет искать этот путь для соответствующего сертификата. Здесь неясно (предположим, что вы находитесь на машине unix) независимо от того, разместил ли вы свой сертификат в этом каталоге. Если вы сделали успешную связь, вы должны иметь. Вы можете получить дополнительную информацию о конкретных местах каталога здесь: http://serverfault.com/questions/62496/ssl-certificate-location-on-unix-linux – mba12
Что такое PHP? – cerd
Я провел довольно немного тестирования здесь (из экземпляра EC2), и похоже, что строка, которая устанавливает путь открытого ключа PEM, даже не требуется, а также строки, которые должны включать PEM из документов AWS для подключения через командную строку. Это означает, что @ mba12 является правильным в том, что сертификаты RDS должны существовать в экземпляре где-то уже и не нужно ссылаться. Если я буду ссылаться на них неправильно, тогда да, это ломается. Испытываете ли вы это снаружи AWS VPC? –