

# Configurar certificados SSL/TLS para conexões do Aurora DSQL
<a name="configure-root-certificates"></a><a name="ssl-certificate-overview"></a>

O Aurora DSQL requer que todas as conexões usem a criptografia Transport Layer Security (TLS). Para estabelecer conexões seguras, seu sistema cliente deve confiar na Amazon Root Certificate Authority (Amazon Root CA 1). Esse certificado vem pré-instalado em vários sistemas operacionais. Esta seção oferece instruções para verificar o certificado da Amazon Root CA 1 pré-instalado em vários sistemas operacionais e orienta você pelo processo de instalação manual do certificado, caso ele ainda não esteja instalado. 

Recomendamos usar o PostgreSQL versão 17.

**Importante**  
Para ambientes de produção, recomendamos usar o modo SSL `verify-full` para garantir o mais alto nível de segurança de conexão. Esse modo verifica se o certificado do servidor está assinado por uma autoridade de certificação confiável e se o nome do host do servidor corresponde ao certificado.

## Verificar certificados pré-instalados
<a name="verify-installed-certificates"></a>

Na maioria dos sistemas operacionais, o **Amazon Root CA 1** já vem pré-instalado. Para confirmar, você pode seguir as etapas abaixo.

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

Execute os seguintes comandos no terminal:

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

Se o certificado estiver instalado, você verá a seguinte saída:

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

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

1. Abra o campo de pesquisa do Spotlight (**comando** \$1 **espaço**).

1. Pesquise **Keychain Access**.

1. Selecione **System Roots** em **System Keychains**.

1. Pesquise **Amazon Root CA 1** na lista de certificados.

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

**nota**  
Devido a um problema conhecido com o cliente psql do Windows, o uso de certificados raiz do sistema (`sslrootcert=system`) pode retornar o seguinte erro: `SSL error: unregistered scheme`. Você pode seguir a seção [Conectar-se pelo Windows](#connect-windows) como alternativa para se conectar ao seu cluster usando SSL. 

Se o **Amazon Root CA 1** não estiver instalado em seu sistema operacional, siga as etapas abaixo. 

## Instalar certificados
<a name="install-certificates"></a>

 Se o certificado `Amazon Root CA 1` não estiver pré-instalado em seu sistema operacional, você precisará instalá-lo manualmente para estabelecer conexões seguras com seu cluster do Aurora DSQL. 

### Instalação do certificado no Linux
<a name="install-linux"></a>

Siga estas etapas para instalar o certificado Amazon Root CA em sistemas Linux.

1. Baixe o certificado raiz:

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

1. Copie o certificado para um armazenamento confiável.

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

1. Atualize o armazenamento confiável da CA:

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

1. Verifique a instalação:

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

### Instalação do certificado no macOS
<a name="install-macos"></a>

Estas etapas de instalação do certificado são opcionais. A [Instalação do certificado no Linux](#install-linux) também funciona para macOS.

1. Baixe o certificado raiz:

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

1. Adicione o certificado a System keychain:

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

1. Verifique a instalação:

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

## Conectar-se com verificação SSL/TLS
<a name="connect-using-certificates"></a>

 Antes de configurar certificados SSL/TLS para conexões seguras com o cluster do Aurora DSQL, verifique se você atende aos pré-requisitos abaixo. 
+ PostgreSQL versão 17 instalado
+ AWS CLI configurada com as credenciais apropriadas
+ Informações do endpoint do cluster do Aurora DSQL

### Conectar-se pelo Linux
<a name="connect-linux"></a>

1. Gere e defina o token de autenticação:

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

1. Conecte-se usando certificados do sistema (se pré-instalados):

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

1. Ou conecte-se usando um certificado baixado:

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

**nota**  
 Para ter mais informações sobre as configurações do PGSSLMODE, consulte [sslmode](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-SSLMODE) na documentação [Database Connection Control Functions](https://www.postgresql.org/docs/current/libpq-connect.html) do PostgreSQL 17. 

### Conectar-se pelo macOS
<a name="connect-macos"></a>

1. Gere e defina o token de autenticação:

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

1. Conecte-se usando certificados do sistema (se pré-instalados):

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

1. Ou baixe o certificado raiz e salve-o como `root.pem` (se ele não estiver pré-instalado).

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

1. Conectar-se usando o psql:

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

### Conectar-se pelo Windows
<a name="connect-windows"></a>

#### Por meio do prompt de comando
<a name="windows-command-prompt"></a>

1. Gere um token de autenticação:

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

1. Defina a variável de ambiente de senha:

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

1. Defina a configuração do SSL:

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

1. Conecte-se ao banco de dados:

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

#### Usando o PowerShell
<a name="windows-powershell"></a>

1. Gere e defina o token de autenticação:

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

1. Defina a configuração do SSL:

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

1. Conecte-se ao banco de dados:

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

## Recursos adicionais
<a name="additional-resources"></a>
+  [Documentação do SSL do PostgreSQL](https://www.postgresql.org/docs/current/libpq-ssl.html) 
+  [Amazon Trust Services](https://www.amazontrust.com/repository/) 