使用 SSL/TLS 加密對 MariaDB 資料庫執行個體的用戶端連線 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 SSL/TLS 加密對 MariaDB 資料庫執行個體的用戶端連線

Secure Sockets Layer (SSL) 是一種產業標準通訊協定,可保護用戶端與伺服器之間的網路連線。SSL 3.0 版之後,名稱已變更為 Transport Layer Security (TLS)。Amazon RDS 支援 MariaDB 資料庫執行個體的 SSL/TLS 加密。使用 SSL/TLS,您可以加密應用程式用戶端與 MariaDB 資料庫執行個體之間的連接。SSL/TLS 支援在所有方面都可以使用。 AWS 區域

將 SSL/TLS 與 MariaDB 資料庫執行個體搭配使用

當 Amazon RDS 佈建執行個體時,Amazon RDS 會建立 SSL/TLS 憑證,並將該憑證安裝在資料庫執行個體上。憑證由憑證授權機構簽署。SSL/TLS 憑證會以通用名稱 (CN) 加入資料庫執行個體端點,讓 SSL/TLS 憑證免於遭受詐騙攻擊。

Amazon RDS 建立的 SSL/TLS 憑證是可信任的根實體,應可適用於大多數情況,但若您的應用程式不接受憑證鏈結,則可能無法使用。若您的應用程式不接受憑證鏈結,您可能需要使用中繼憑證來連線至您的 AWS 區域。例如,您必須使用中繼憑證來連線到使用 SSL/TLS 的 AWS GovCloud (US) 區域。

如需有關下載憑證的詳細資訊,請參閱。如需在使用 SSL/TLS 搭配 MySQL 的詳細資訊,請參閱 更新應用程式,以使用新的 SSL/TLS 憑證連線至 MariaDB 執行個體

Amazon RDS for MariaDB 支援傳輸層安全性 (TLS) 1.3、1.2、1.1 和 1.0 版。TLS 支持取決於 MariaDB 的次要版本。下表顯示了對 MariaDB 次要版本的 TLS 支援。

TLS 版本控制 MariaDB 10.11 MariaDB 10.6 MariaDB 10.5 MariaDB 10.4

TLS 1.3

所有次要版本

所有次要版本

所有次要版本

所有次要版本

TLS 1.2

所有次要版本

所有次要版本

所有次要版本

所有次要版本

TLS 1.1

10.11.6 及更低版本

十六月十六日及更低版本

5 月 10 日及更低版本

10.4.32 及更低版本

TLS 1.0

10.11.6 及更低版本

十六月十六日及更低版本

5 月 10 日及更低版本

10.4.32 及更低版本

您可以要求特定使用者帳戶使用 SSL/TLS 連線。例如,您可以根據 MariaDB 版本,使用下列任一陳述式,要求使用者帳戶 encrypted_user 使用 SSL/TLS 連線。

使用以下陳述式。

ALTER USER 'encrypted_user'@'%' REQUIRE SSL;

如需使用 MariaDB 的 SSL/TLS 連線詳細資訊,請參閱 MariaDB 文件中的保護用戶端和伺服器的連線

MariaDB 資料庫執行個體的所有連線都需要 SSL/TLS

使用 require_secure_transport 參數來要求使用者與 MariaDB 資料庫執行個體的所有連線都使用 SSL/TLS。依預設,require_secure_transport 參數設為 OFF。您可以將 require_secure_transport 參數設為 ON,以要求對資料庫執行個體的連線使用 SSL/TLS。

注意

僅 MariaDB 10.5 版和更新版本支援 require_secure_transport 參數。

您可以更新資料庫執行個體的資料庫參數群組,以設定 require_secure_transport 參數值。您不需要重新啟動資料庫執行個體,變更即可生效。

當資料庫執行個體的 require_secure_transport 參數設為 ON 時,如果可以建立加密的連線,則資料庫用戶端即可連線到該資料庫叢集。否則,類似下列內容的錯誤訊息會傳回至用戶端:

ERROR 1045 (28000): Access denied for user 'USER'@'localhost' (using password: YES | NO)

如需有關設定參數的詳細資訊,請參閱 修改資料庫參數群組中的參數

如需 require_secure_transport 參數的詳細資訊,請參閱 MariaDB 文件

使用 SSL/TLS (加密) 從 MySQL 命令列用戶端連線

如果您使用的是 MySQL 5.7 版、MySQL 8.0 版或 MariaDB 版本,mysql 用戶端程式的參數略有不同。

若要找出您擁有的版本,請執行具有 --version 選項的 mysql 命令。在以下範例中,輸出顯示了用戶端程式是來自 MariaDB。

$ mysql --version mysql Ver 15.1 Distrib 10.5.15-MariaDB, for osx10.15 (x86_64) using readline 5.1

大多數 Linux 發行版本,例如 Amazon Linux、CentOS、SUSE 和 Debian 都用 MariaDB 取代 MySQL,而且發行版本中的 mysql 版是來自 MariaDB。

若要使用 SSL/TLS 連線到資料庫執行個體,請執行以下步驟:

使用 MySQL 命令列用戶端搭配 SSL/TLS 連接至資料庫執行個體
  1. 下載適用於所有人的根憑證 AWS 區域。

    如需有關下載憑證的詳細資訊,請參閱

  2. 使用 MySQL 命令列用戶端搭配 SSL/TLS 加密連接至資料庫執行個體。在 -h 參數中,將 DNS 名稱 (端點) 取代為您的資料庫執行個體。在 --ssl-ca 參數中,取代 SSL/TLS 憑證檔名稱。在 -P 參數中,取代為您的資料庫執行個體連接埠。在 -u 參數中,請以有效資料庫使用者取代使用者名稱,例如主要使用者。出現提示時,輸入主要使用者密碼。

    下列範例顯示如何對於 MariaDB 用戶端更新的版本使用 --ssl-ca 參數啟動用戶端:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl -P 3306 -u myadmin -p

    若要要求 SSL/TLS 連線根據 SSL/TLS 憑證中的端點來驗證資料庫執行個體端點,請輸入下列命令:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-verify-server-cert -P 3306 -u myadmin -p

    下列範例顯示如何對於 MySQL 5.7 用戶端更新的版本使用 --ssl-ca 參數啟動用戶端:

    mysql -h mysql–instance1.123456789012.us-east-1.rds.amazonaws.com --ssl-ca=global-bundle.pem --ssl-mode=REQUIRED -P 3306 -u myadmin -p
  3. 出現提示時,輸入主要使用者密碼。

您應該會看到類似下列的輸出。

Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 31 Server version: 10.6.10-MariaDB-log Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>