

# 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 検索 (**Command** \$1 **スペース**) を開く

1. **[キーチェーンアクセス]** を検索する

1. **[システムキーチェーン]** で **[システムルート]** を選択する

1. 証明書リストで **[Amazon ルート CA 1]** を検索する

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

**注記**  
psql Windows クライアントの既知の問題により、システムルート証明書 (`sslrootcert=system`) を使用すると、`SSL error: unregistered scheme` エラーが返されることがあります。SSL を使用してクラスターに接続する代替方法として「[Windows からの接続](#connect-windows)」を使用できます。

**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>

 Aurora DSQL クラスターへの安全な接続のために SSL/TLS 証明書を設定する前に、次の動作条件を満たしていることを確認してください。
+ 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「[Database Connection Control Functions](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/) 