

# Aurora DSQL 연결을 위한 SSL/TLS 인증서 구성
<a name="configure-root-certificates"></a><a name="ssl-certificate-overview"></a>

Aurora DSQL은 Transport Layer Security(TLS) 암호화를 사용하려면 모든 연결이 필요합니다. 보안 연결을 설정하려면 클라이언트 시스템이 Amazon Root Certificate Authority(Amazon Root CA 1)를 신뢰해야 합니다. 이 인증서는 많은 운영 체제에 사전 설치되어 있습니다. 이 섹션에서는 다양한 운영 체제에서 사전 설치된 Amazon Root CA 1 인증서를 확인하는 지침을 제공하고 인증서가 아직 없는 경우 수동으로 설치하는 프로세스를 안내합니다.

PostgreSQL 버전 17을 사용하는 것이 좋습니다.

**중요**  
프로덕션 환경의 경우 `verify-full` SSL 모드를 사용하여 최고 수준의 연결 보안을 보장하는 것이 좋습니다. 이 모드는 서버 인증서가 신뢰할 수 있는 인증 기관에서 서명되었고 서버 호스트 이름이 인증서와 일치하는지 확인합니다.

## 사전 설치된 인증서 확인
<a name="verify-installed-certificates"></a>

대부분의 운영 체제에서 **Amazon Root 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 Search를 엽니다(**Command** \$1 **스페이스**).

1. **Keychain Access**를 검색합니다.

1. **System Keychains**에서 **System Roots**를 선택합니다.

1. 인증서 목록에서 **Amazon Root CA 1**을 찾습니다.

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

**참고**  
psql Windows 클라이언트에서 알려진 문제로 인해 시스템 루트 인증서(`sslrootcert=system`)를 사용하면 `SSL error: unregistered scheme` 오류가 반환될 수 있습니다. SSL을 사용하여 클러스터에 연결하는 다른 방법으로 [Windows에서 연결](#connect-windows)를 따를 수 있습니다.

운영 체제에 **Amazon Root CA 1**이 설치되어 있지 않은 경우 아래 단계를 따릅니다.

## 인증서 설치
<a name="install-certificates"></a>

 운영 체제에 `Amazon Root CA 1` 인증서가 사전 설치되어 있지 않은 경우 Aurora DSQL 클러스터에 대한 보안 연결을 설정하려면 인증서를 수동으로 설치해야 합니다.

### Linux 인증서 설치
<a name="install-linux"></a>

다음 단계에 따라 Linux 시스템에 Amazon Root 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>

이러한 인증서 설치 단계는 선택 사항입니다. macOS에서도 [Linux 인증서 설치](#install-linux)가 적용됩니다.

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/) 