

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

# 在 Amazon RDS 上使用 SSL/TLS 加密對 MariaDB 資料庫執行個體的用戶端連線
<a name="mariadb-ssl-connections"></a>

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

透過 Amazon RDS，您可以使用 SSL/TLS 加密 MariaDB 資料庫執行個體的用戶端連線、要求 MariaDB 資料庫執行個體的所有連線都必須使用 SSL/TLS，以及使用 SSL/TLS 從 MySQL 命令列用戶端連線 (加密)，藉以保護傳輸中的資料。以下幾節提供在 Amazon RDS 上為 MariaDB 資料庫執行個體設定和使用 SSL/TLS 加密的指引。

**Topics**
+ [Amazon RDS 支援在 MariaDB 資料庫執行個體上啟用 SSL/TLS 加密。](MariaDB.Concepts.SSLSupport.md)
+ [Amazon RDS 上的特定使用者帳戶連線至 MariaDB 資料庫執行個體時需要 SSL/TLS](MariaDB-ssl-connections.require-ssl-users.md)
+ [Amazon RDS 上的 MariaDB 資料庫執行個體的所有連線都需要 SSL/TLS](mariadb-ssl-connections.require-ssl.md)
+ [使用 SSL/TLS 從 MySQL 命令列用戶端連線至 Amazon RDS 上的 MariaDB 資料庫執行個體 (加密)](USER_ConnectToMariaDBInstanceSSL.CLI.md)

# Amazon RDS 支援在 MariaDB 資料庫執行個體上啟用 SSL/TLS 加密。
<a name="MariaDB.Concepts.SSLSupport"></a>

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

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

如需有關下載憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。如需在使用 SSL/TLS 搭配 MySQL 的詳細資訊，請參閱 [更新應用程式，以使用新的 SSL/TLS 憑證連線至 MariaDB 執行個體](ssl-certificate-rotation-mariadb.md)。

Amazon RDS for MariaDB 支援 Transport Layer Security (TLS) 1.3、1.2、1.1 和 1.0 版。TLS 支援取決於 MariaDB 次要版本。下表顯示 MariaDB 次要版本的 TLS 支援。


| TLS 版本控制 | MariaDB 11.8 | MariaDB 11.4 | MariaDB 10.11 | MariaDB 10.6 | MariaDB 10.5 | MariaDB 10.4 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  TLS 1.3  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  | 
|  TLS 1.2  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  |  所有次要版本  | 
|  TLS 1.1  |  不支援  |  不支援  |  不支援  |  10.6.16 及更低版本  |  10.5.23 及更低版本  |  10.4.32 及更低版本  | 
|  TLS 1.0  |  不支援  |  不支援  | 不支援 | 10.6.16 及更低版本 |  10.5.23 及更低版本  |  10.4.32 及更低版本  | 

# Amazon RDS 上的特定使用者帳戶連線至 MariaDB 資料庫執行個體時需要 SSL/TLS
<a name="MariaDB-ssl-connections.require-ssl-users"></a>

指定的使用者帳戶在 Amazon RDS 上連線至您的 MariaDB 資料庫執行個體時，您可以要求 SSL/TLS 加密。保護敏感資訊不受未經授權的存取或攔截影響，對於強制執行重視資料機密性的安全政策至關重要。

若要對特定使用者的帳戶要求 SSL/TLS 連線，請根據您的 MySQL 版本使用下列其中一個陳述式，要求使用者帳戶 `encrypted_user` 必須採用 SSL/TLS 連線。

若要這麼做，請使用下列陳述式。

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

如需使用 MariaDB 的 SSL/TLS 連線詳細資訊，請參閱 MariaDB 文件中的[保護用戶端和伺服器的連線](https://mariadb.com/kb/en/securing-connections-for-client-and-server/)。

# Amazon RDS 上的 MariaDB 資料庫執行個體的所有連線都需要 SSL/TLS
<a name="mariadb-ssl-connections.require-ssl"></a>

使用 `require_secure_transport` 參數來要求使用者與 MariaDB 資料庫執行個體的所有連線都使用 SSL/TLS。對於 11.4 版和更早版本，`require_secure_transport` 參數預設為 `OFF`。對於 11.8 和更新版本，預設值設定為 `ON`，強制執行 SSL/TLS 以連線至資料庫執行個體。如果需要不安全的連線，您可以將 `require_secure_transport` 參數變更為 `OFF`。

**注意**  
僅 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)
```

如需有關設定參數的詳細資訊，請參閱 [修改 Amazon RDS 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)。

如需 `require_secure_transport` 參數的詳細資訊，請參閱 [MariaDB 文件](https://mariadb.com/docs/ent/ref/mdb/system-variables/require_secure_transport/)。

# 使用 SSL/TLS 從 MySQL 命令列用戶端連線至 Amazon RDS 上的 MariaDB 資料庫執行個體 (加密)
<a name="USER_ConnectToMariaDBInstanceSSL.CLI"></a>

如果您使用的是 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 區域。

   如需有關下載憑證的詳細資訊，請參閱[使用 SSL/TLS 加密與資料庫執行個體或叢集的連線](UsingWithRDS.SSL.md)。

1. 使用 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
   ```

1. 出現提示時，輸入主要使用者密碼。

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

```
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)]>
```