簡體   English   中英

使用 PHP 通過 SSL 將 AWS EC2 實例連接到 RDS MySQL

[英]Connect AWS EC2 instance to RDS MySQL through SSL using PHP

我無法讓我的 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 應用程序,我需要執行以下代碼。 為了不影響我的數據庫,我設置了一個測試數據庫。 新用戶被稱為具有自己密碼的新用戶。 我從https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem獲得了捆綁的 PEM 文件 rds-combined-ca-bundle.pem 並將其放置在 EC2 上的瀏覽​​器可訪問目錄中由該 AWS 頁面指示的服務器。

任何想法為什么“無法在輸出中設置私鑰文件‘rds-combined-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.



這是一個 PHP mysqli_real_connect() 錯誤報告無法找到指定的 SSL 密鑰。

在第 13 行的此語句中引用了該鍵:

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

該消息表明密鑰文件不存在,或權限不正確。 您能確認該目錄中的文件可以訪問嗎?

如果它不重要,您也可以關閉 SSL 並查看它是否有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM