首页 > 解决方案 > 使用 PHP #2 通过 SSL 将 AWS EC2 实例连接到 RDS MySQL

问题描述

这是一个与前一个标题相同的问题不同的问题。

我无法让我的 AWS EC2 实例通过 SSL 连接到我的 RDS MySQL 数据库。

AWS EC2 Linux 2、Apache 2.4.39、PHP 7.3.10、MySQL 5.7.26

为了让我驻留在 EC2 中的应用程序在传输过程中拥有安全连接,它必须使用 SSL/TLS。我的理解是,鉴于我的 PHP/MySQL 应用程序,我需要执行下面的代码。为了不影响我的数据库,我建立了一个测试数据库。新用户称为 new-user,有自己的密码。我从https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem获得了捆绑的 PEM 文件 rds-combined-ca-bundle.pem并将其放在 EC2 上的浏览​​器可访问目录中该 AWS 页面指示的服务器。

任何想法我需要用 mysqli_real_connect() 和任何其他语句更改以允许访问数据库?

在 AWS-test-ssl-script.php ..

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

在'AWS-test-connect.php' ..

12 $dbc=mysqli_init();

13 mysqli_ssl_set($dbc, NULL, NULL, NULL, "/dir/rds-combined-ca-bundle.pem", NULL);
14 mysqli_real_connect($dbc,"DB_server[without :port#]","new-user","password", "db-name", "port#");

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

在 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);

输出 ..

Warning: mysqli_real_connect(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /dir/AWS-test-connect.php on line 14
Warning: mysqli_real_connect(): Cannot connect to MySQL by using SSL in /dir/AWS-test-connect.php on line 14
Warning: mysqli_real_connect(): [2002] (trying to connect via (null)) in /dir/AWS-test-connect.php on line 14
Warning: mysqli_real_connect(): (HY000/2002): in /dir/AWS-test-connect.php on line 14

标签: phpsslmysqliamazon-ec2amazon-rds

解决方案


推荐阅读