

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

# 為 Aurora DSQL 連線設定 SSL/TLS 憑證
<a name="configure-root-certificates"></a><a name="ssl-certificate-overview"></a>

Aurora DSQL 要求所有連線使用 Transport Layer Security (TLS) 加密。若要建立安全連線，您的用戶端系統必須信任 Amazon 根憑證認證機構 (Amazon 根 CA 1)。此憑證已預先安裝在許多作業系統。本節說明如何驗證各種作業系統預先安裝的 Amazon 根 CA 1 憑證，並在沒有安裝憑證的情況下，引導您完成手動安裝憑證的程序。

我們建議使用 PostgreSQL 17 版。

**重要**  
對於正式作業環境，我們建議使用 `verify-full` SSL 模式以確保最高層級的連線安全性。此模式會驗證伺服器憑證是否由信任的憑證認證機構簽署，以及伺服器主機名稱是否與憑證相符。

## 驗證預先安裝的憑證
<a name="verify-installed-certificates"></a>

在大多數作業系統中，**Amazon 根 CA 1** 已預先安裝。若需驗證，您可以遵循下列步驟。

### Linux (RedHat/CentOS/Fedora)
<a name="verify-linux"></a>

在終端中執行下列命令：

```
trust list | grep "Amazon Root CA 1"
```

如果已安裝憑證，您會看到下列輸出內容：

```
label: Amazon Root CA 1
```

### macOS
<a name="verify-macos"></a>

1. 開啟 Spotlight 搜尋 (**命令** \$1 **空格**)

1. 搜尋**鑰匙圈存取**

1. 選擇**系統鑰匙圈**之下的**系統根目錄**

1. 在憑證清單中尋找 **Amazon 根 CA 1**

### Windows
<a name="verify-windows"></a>

**注意**  
由於 psql Windows 用戶端的已知問題，使用系統根憑證 (`sslrootcert=system`) 可能會傳回下列錯誤：`SSL error: unregistered scheme`。您可以遵循 [從 Windows 進行連線](#connect-windows) 作為使用 SSL 連線至叢集的替代方法。

如果您的作業系統並未安裝 **Amazon 根 CA 1**，請遵循下列步驟。

## 安裝憑證
<a name="install-certificates"></a>

 如果 `Amazon Root CA 1` 憑證未預先安裝在您的作業系統上，您將需要手動安裝憑證，才能與 Aurora DSQL 叢集建立安全連線。

### Linux 憑證安裝
<a name="install-linux"></a>

請依照下列步驟在 Linux 系統安裝 Amazon 根 CA 憑證。

1. 下載根憑證：

   ```
   wget https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

1. 將憑證複製到信任存放區：

   ```
   sudo cp ./AmazonRootCA1.pem /etc/pki/ca-trust/source/anchors/
   ```

1. 更新 CA 信任存放區：

   ```
   sudo update-ca-trust
   ```

1. 驗證安裝：

   ```
   trust list | grep "Amazon Root CA 1"
   ```

### macOS 憑證安裝
<a name="install-macos"></a>

這些憑證安裝步驟為選用。[Linux 憑證安裝](#install-linux) 也適用於 macOS。

1. 下載根憑證：

   ```
   wget https://www.amazontrust.com/repository/AmazonRootCA1.pem
   ```

1. 將憑證新增至系統鑰匙圈：

   ```
   sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain AmazonRootCA1.pem
   ```

1. 驗證安裝：

   ```
   security find-certificate -a -c "Amazon Root CA 1" -p /Library/Keychains/System.keychain
   ```

## 以 SSL/TLS 驗證連線
<a name="connect-using-certificates"></a>

 在設定 SSL/TLS 憑證以安全連線至 Aurora DSQL 叢集之前，請先確定您符合下列先決條件。
+ 已安裝 PostgreSQL 第 17 版
+ AWS CLI 使用適當的登入資料設定
+ Aurora DSQL 叢集端點資訊

### 從 Linux 連線
<a name="connect-linux"></a>

1. 產生並設定身分驗證記號：

   ```
   export PGPASSWORD=$(aws dsql generate-db-connect-admin-auth-token --region=your-cluster-region --hostname your-cluster-endpoint)
   ```

1. 使用系統憑證進行連線 (如果預先安裝)：

   ```
   PGSSLROOTCERT=system \
   PGSSLMODE=verify-full \
   psql --dbname postgres \
   --username admin \
   --host your-cluster-endpoint
   ```

1. 或者使用下載的憑證進行連線：

   ```
   PGSSLROOTCERT=/full/path/to/root.pem \
   PGSSLMODE=verify-full \
   psql --dbname postgres \
   --username admin \
   --host your-cluster-endpoint
   ```

**注意**  
 如需 PGSSLMODE 設定的詳細資訊，請參閱 PostgresQL 17 [資料庫連線控制功能](https://www.postgresql.org/docs/current/libpq-connect.html)文件中的 [sslmode](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-SSLMODE)。

### 從 macOS 連線
<a name="connect-macos"></a>

1. 產生並設定身分驗證記號：

   ```
   export PGPASSWORD=$(aws dsql generate-db-connect-admin-auth-token --region=your-cluster-region --hostname your-cluster-endpoint)
   ```

1. 使用系統憑證進行連線 (如果預先安裝)：

   ```
   PGSSLROOTCERT=system \
   PGSSLMODE=verify-full \
   psql --dbname postgres \
   --username admin \
   --host your-cluster-endpoint
   ```

1. 或者下載根憑證並將其儲存為 `root.pem` (如果未預先安裝憑證)

   ```
   PGSSLROOTCERT=/full/path/to/root.pem \
   PGSSLMODE=verify-full \
   psql —dbname postgres \
   --username admin \
   --host your_cluster_endpoint
   ```

1. 使用 psql 進行連線：

   ```
   PGSSLROOTCERT=/full/path/to/root.pem \
   PGSSLMODE=verify-full \
   psql —dbname postgres \
   --username admin \
   --host your_cluster_endpoint
   ```

### 從 Windows 進行連線
<a name="connect-windows"></a>

#### 使用命令提示
<a name="windows-command-prompt"></a>

1. 產生身分驗證記號：

   ```
   aws dsql generate-db-connect-admin-auth-token ^
   --region=your-cluster-region ^
   --expires-in=3600 ^
   --hostname=your-cluster-endpoint
   ```

1. 設定密碼環境變數：

   ```
   set "PGPASSWORD=token-from-above"
   ```

1. 設定 SSL 組態：

   ```
   set PGSSLROOTCERT=C:\full\path\to\root.pem
   set PGSSLMODE=verify-full
   ```

1. 連線至資料庫：

   ```
   "C:\Program Files\PostgreSQL\17\bin\psql.exe" --dbname postgres ^
   --username admin ^
   --host your-cluster-endpoint
   ```

#### 使用 PowerShell
<a name="windows-powershell"></a>

1. 產生並設定身分驗證記號：

   ```
   $env:PGPASSWORD = (aws dsql generate-db-connect-admin-auth-token --region=your-cluster-region --expires-in=3600 --hostname=your-cluster-endpoint)
   ```

1. 設定 SSL 組態：

   ```
   $env:PGSSLROOTCERT='C:\full\path\to\root.pem'
   $env:PGSSLMODE='verify-full'
   ```

1. 連線至資料庫：

   ```
    "C:\Program Files\PostgreSQL\17\bin\psql.exe" --dbname postgres `
   --username admin `
   --host your-cluster-endpoint
   ```

## 其他資源
<a name="additional-resources"></a>
+  [PostgreSQL SSL 文件](https://www.postgresql.org/docs/current/libpq-ssl.html) 
+  [Amazon Trust Services](https://www.amazontrust.com/repository/) 