php - 使用 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
解决方案
推荐阅读
- javascript - JSON 数据来自之前的 AJAX 调用
- docker - 无法通过 X509Store 访问自签名 CA
- css - 如何水平对齐菜单?
- xpath - 使用 xpath 检查字符串是否只有 ASCII 字符
- powershell - 将对象中的数据导出到csv中的单个单元格
- php - 为什么我在第 11 行的 C:\UwAmp\www\v.php 中收到错误解析错误:语法错误,意外 '[',期待 ')'?
- php - HTML/PHP 联系表单在 Heroku 上不起作用
- windows - 如何过滤 cl.exe 的输出但保留成功/错误代码?
- artifactory - Concourse + Artifactory - 找不到版本“1.0.0”的文件
- angular - 如何在 ngif 中使用 localstorage 值