Подключите экземпляр AWS EC2 к RDS MySQL через SSL, используя PHP - PullRequest
0 голосов
/ 11 января 2020

Мне не удается подключить мой экземпляр AWS EC2 к моей БД RDS MySQL через SSL.

AWS EC2 Linux 2, Apache 2.4.39, PHP 7.3.10, MySQL 5.7.26. Чтобы мое приложение, которое находится в EC2, имело безопасное соединение при передаче, оно должно использовать SSL / TLS. Насколько я понимаю, учитывая мое PHP / MySQL приложение, мне нужно выполнить приведенный ниже код. Чтобы не влиять на мою БД, я настроил тестовую БД. Новый пользователь называется new-user со своим паролем. Я получил связанный файл PEM rds-комбинированный-ca-bundle.pem из https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem и поместил его в каталог, доступный для браузера на сервере EC2, как указано на этой странице AWS.

Есть идеи, почему "Невозможно установить файл закрытого ключа` rds-комбинированный-ca-bundle.pem '"в выводе?

**In AWS-test-ssl-script.php** ..

20 define ('MYSQLI', 'AWS-test-connect.php');

**In 'AWS-test-connect.php'** ..

12 $dbc=mysqli_init();
13 mysqli_ssl_set($dbc, NULL, "/dir/rds-combined-ca-bundle.pem", NULL, NULL, NULL);
14 mysqli_real_connect($dbc,"DB_server","new-user","password");

16 $res = mysqli_query($dbc, 'SHOW STATUS like "Ssl_cipher"');
17 print_r(mysqli_fetch_row($res));
18 mysqli_close($dbc);

**In AWS-test-ssl-script.php** ..

35 require(MYSQLI);

44 $sel = "CREATE USER IF NOT EXISTS 'new-user'@'%' IDENTIFIED BY 'password' REQUIRE SSL";
45 $sel_qry = mysqli_query($dbc, $sel);
46 mysqli_close($sel_qry);

48 $grant = "GRANT SELECT, INSERT, UPDATE, DELETE
49 ON testdb
50 TO new-user@%";
51 $grant_qry = mysqli_query($dbc, $grant);
52 mysqli_close($grant_qry);```

Output ..
Warning: mysqli_real_connect(): Unable to set private key file `rds-combined-ca-bundle.pem' in AWS-test-connect.php on line 14
Warning: mysqli_real_connect(): Cannot connect to MySQL by using SSL in AWS-test-connect.php on line 14
plus other warnings.



1 Ответ

1 голос
/ 11 января 2020

Это ошибка PHP mysqli_real_connect (), сообщающая, что указанный ключ SSL не может быть найден.

Этот ключ упоминается в этом операторе в строке 13:

 mysqli_ssl_set($dbc, NULL, "/dir/rds-combined-ca-bundle.pem", NULL, NULL, NULL);

Это сообщение указывает на то, что файл ключа не существует или имеет неправильные разрешения. Можете ли вы подтвердить, что файл доступен в этом каталоге?

Вы также можете отключить SSL, если это не важно, и посмотреть, работает ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...