

# Alternar o certificado SSL/TLS
<a name="UsingWithRDS.SSL-certificate-rotation"></a>

Os certificados rds-ca-2019 da autoridade de certificação do Amazon RDS expiraram em agosto de 2024. Se você usa ou planeja usar Secure Sockets Layer (SSL) ou Transport Layer Security (TLS) com verificação de certificado para se conectar às instâncias de banco de dados do RDS ou clusters de banco de dados multi-AZ,considere usar um dos novos certificados CA rds-ca-rsa2048-g1, rds-ca-rsa4096-g1 ou rds-ca-ecc384-g1. Se você não usa SSL/TLS com verificação de certificado no momento, é possível que ainda tenha algum certificado de CA expirado e precise atualizá-lo para um novo certificado de CA se planeja usar SSL/TLS com verificação de certificado para se conectar aos bancos de dados do RDS.

‎‎O Amazon RDS fornece novos certificados CA como uma prática recomendada de segurança da AWS. Para ter informações sobre os novos certificados e as regiões da AWS compatíveis, consulte [Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados](UsingWithRDS.SSL.md).

Para atualizar o certificado CA do seu banco de dados, use os seguintes métodos: 
+  [Atualizar o certificado CA modificando a instância ou o cluster de banco de dados](#UsingWithRDS.SSL-certificate-rotation-updating) 
+  [Atualizar seu certificado CA aplicando manutenção](#UsingWithRDS.SSL-certificate-rotation-maintenance-update) 

Antes de atualizar as instâncias de banco de dados ou clusters de banco de dados multi-AZ para usar o novo certificado CA, atualize os clientes ou as aplicações que se conectam aos bancos de dados do RDS.

## Considerações sobre a troca de certificados
<a name="UsingWithRDS.SSL-certificate-rotation-considerations"></a>

Pense nas seguintes situações antes de trocar seu certificado:
+ O Amazon RDS Proxy usa certificados do AWS Certificate Manager (ACM). Se estiver usando o RDS Proxy, ao trocar o certificado SSL/TLS, não será necessário atualizar as aplicações que usam conexões do RDS Proxy. Para ter mais informações, consulte [Usar TLS/SSL com o RDS Proxy](rds-proxy.howitworks.md#rds-proxy-security.tls) .
+ Se estiver usando uma aplicação Go versão 1.15 com uma instância de banco de dados ou um cluster de banco de dados multi-AZ criada ou atualizada para o certificado rds-ca-2019 antes de 28 de julho de 2020, você deverá atualizar o certificado novamente. Atualize o certificado para rds-ca-rsa2048-g1, rds-ca-rsa4096-g1 ou rds-ca-ecc384-g1, dependendo do seu mecanismo . 

  Use o comando `modify-db-instance` para uma instância de banco de dados, ou o comando `modify-db-cluster` para um cluster de banco de dados multi-AZ usando o novo identificador de certificado CA. Você pode encontrar as CAs que estão disponíveis para uma versão específica do mecanismo de banco de dados e do mecanismo de banco de dados usando o comando `describe-db-engine-versions`. 

  Caso você tenha criado a instância de banco de dados ou atualizado o certificado dela após 28 de julho de 2020, nenhuma ação será necessária. Para obter mais informações, consulte [Go GitHub issue \$139568](https://github.com/golang/go/issues/39568). 

## Atualizar o certificado CA modificando a instância ou o cluster de banco de dados
<a name="UsingWithRDS.SSL-certificate-rotation-updating"></a>

O exemplo a seguir atualiza o certificado de CA de *rds-ca-2019* para *rds-ca-rsa2048-g1*. Você pode escolher um certificado diferente. Para ter mais informações, consulte [Autoridades certificadoras](UsingWithRDS.SSL.md#UsingWithRDS.SSL.RegionCertificateAuthorities).. 

Atualize seu repositório confiável de aplicações para reduzir o tempo de inatividade associado à atualização do certificado de CA. Consulte mais informações sobre reinicializações associadas à alternância de certificados de CA em [Alternância automática de certificados do servidor](#UsingWithRDS.SSL-certificate-rotation-server-cert-rotation).

**Como atualizar o certificado CA modificando a instância ou o cluster de banco de dados**

1. Baixe o novo certificado SSL/TLS conforme descrito em [Usar SSL/TLS para criptografar uma conexão com uma instância ou um cluster de banco de dados](UsingWithRDS.SSL.md).

1. Atualize as aplicações para usarem o novo certificado SSL/TLS.

   Os métodos para atualizar aplicações para novos certificados SSL/TLS dependem de suas aplicações específicas. Trabalhe com os desenvolvedores de aplicações para atualizar os certificados SSL/TLS para suas aplicações.

   Para obter informações sobre como verificar conexões SSL/TLS e atualizar aplicações para cada mecanismo de banco de dados, consulte os seguintes tópicos:
   +  [Atualizar aplicações para conexão com instâncias do MariaDB usando novos certificados SSL/TLS](ssl-certificate-rotation-mariadb.md) 
   +  [Atualizar aplicações para conexão com instâncias de banco de dados Microsoft SQL Server usando novos certificados SSL/TLS](ssl-certificate-rotation-sqlserver.md) 
   +  [Atualizar aplicações para conexão com instâncias de banco de dados MySQL usando novos certificados SSL/TLS](ssl-certificate-rotation-mysql.md) 
   +  [Atualizar aplicações para conexão com instâncias de banco de dados Oracle usando novos certificados SSL/TLS](ssl-certificate-rotation-oracle.md) 
   +  [Atualizar aplicações para conexão com instâncias de banco de dados PostgreSQL usando novos certificados SSL/TLS](ssl-certificate-rotation-postgresql.md) 

   Para conhecer um script de exemplo que atualiza um armazenamento confiável para um sistema operacional Linux, consulte [Script de exemplo para importar certificados para o seu armazenamento confiável](#UsingWithRDS.SSL-certificate-rotation-sample-script).
**nota**  
O pacote de certificados contém certificados tanto para a CA antiga como para a nova, portanto, é possível atualizar a aplicação de maneira segura e manter a conectividade durante o período de transição. Se você estiver usando o AWS Database Migration Service a fim de migrar um banco de dados para uma instância ou um cluster de banco de dados, recomendamos o uso do pacote de certificados para garantir a conectividade durante a migração.

1. Modifique a instância de banco de dados ou cluster de banco de dados multi-AZ para alterar a CA de **rds-ca-2019** para **rds-ca-rsa2048-g1**. Para verificar se o banco de dados requer reinicialização para atualizar os certificados de CA, use o comando [descrebe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) e verifique o sinalizador `SupportsCertificateRotationWithoutRestart`. 
**Importante**  
Se você estiver enfrentando problemas de conectividade após a expiração do certificado, especifique a opção **Apply immediately (Aplicar imediatamente)** no console ou a opção `--apply-immediately` usando a AWS CLI. Por padrão, essa operação é programada para ser executada durante a próxima janela de manutenção.  
Para instâncias de banco de dados do RDS para Oracle, recomendamos que você reinicie o banco de dados do Oracle para evitar erros de conexão.  
Para instâncias multi-AZ do RDS para SQL Server com a opção “Sempre ativa” ou “Espelhamento” habilitada, é esperado um failover quando a instância é reiniciada após a alternância do certificado.  
Para definir uma substituição de CA da instância que é diferente da CA padrão do RDS, use o comando [modify-certificates](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-certificates.html) da CLI.

É possível usa o Console de gerenciamento da AWS ou a AWS CLI para alterar o certificado CA de **rds-ca-2019** para **rds-ca-rsa2048-g1** para uma instância de banco de dados ou cluster de banco de dados multi-AZ. 

------
#### [ Console ]

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, escolha **Bancos de dados** e selecione a instância de banco de dados ou o cluster de banco de dados multi-AZ que você deseja modificar. 

1. Escolha **Modificar**.   
![\[Modificar instância de banco de dados ou cluster de banco de dados multi-AZ\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-modify.png)

1. Na seção **Conectividade**, escolha **rds-ca-rsa2048-g1**.   
![\[Escolher certificado CA\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-ca-rsa2048-g1.png)

1. Escolha **Continue (Continuar)** e verifique o resumo de modificações. 

1. Para aplicar as alterações imediatamente, escolha **Apply immediately**. 

1. Na página de confirmação, revise suas alterações. Se estiverem corretas, escolha **Modificar instância de banco de dados** ou **Modificar cluster** para salvar as alterações. 
**Importante**  
Ao programar essa operação, certifique-se de ter atualizado o armazenamento de confiança do lado do cliente com antecedência.

   Ou escolha **Back (Voltar)** para editar as alterações ou **Cancel (Cancelar)** para cancelar as alterações. 

------
#### [ AWS CLI ]

Para usar a AWS CLI a fim de alterar a CA de **rds-ca-2019** para **rds-ca-rsa2048-g1** para uma instância de banco de dados ou cluster de banco de dados multi-AZ, chame o comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) ou [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html). Especifique o identificador da instância ou do cluster de banco de dados e a opção `--ca-certificate-identifier`.

Use o parâmetro `--apply-immediately` para aplicar a atualização imediatamente. Por padrão, essa operação é programada para ser executada durante a próxima janela de manutenção.

**Importante**  
Ao programar essa operação, certifique-se de ter atualizado o armazenamento de confiança do lado do cliente com antecedência.

**Example**  
 **DB instance (Instância de banco de dados**   
O exemplo a seguir modifica `mydbinstance` definindo o certificado CA como `rds-ca-rsa2048-g1`.   
Para Linux, macOS ou Unix:  

```
aws rds modify-db-instance \
    --db-instance-identifier mydbinstance \
    --ca-certificate-identifier rds-ca-rsa2048-g1
```
Para Windows:  

```
aws rds modify-db-instance ^
    --db-instance-identifier mydbinstance ^
    --ca-certificate-identifier rds-ca-rsa2048-g1
```
Se a instância exigir reinicialização, você poderá usar o comando [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) da CLI e especificar a opção `--no-certificate-rotation-restart`.

**Example**  
 **Cluster de banco de dados multi-AZ**   
O exemplo a seguir modifica `mydbcluster` definindo o certificado CA como `rds-ca-rsa2048-g1`.   
Para Linux, macOS ou Unix:  

```
aws rds modify-db-cluster \
    --db-cluster-identifier mydbcluster \
    --ca-certificate-identifier rds-ca-rsa2048-g1
```
Para Windows:  

```
aws rds modify-db-cluster ^
    --db-cluster-identifier mydbcluster ^
    --ca-certificate-identifier rds-ca-rsa2048-g1
```

------

## Atualizar seu certificado CA aplicando manutenção
<a name="UsingWithRDS.SSL-certificate-rotation-maintenance-update"></a>

Siga as etapas a seguir para atualizar o certificado CA aplicando a manutenção.

------
#### [ Console ]

**Como atualizar o certificado CA aplicando a manutenção**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No painel de navegação, selecione **Atualização de certificado**.   
![\[Opção do painel de navegação de rotação do certificado\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-certupdate.png)

   A página **Bancos de dados que precisam de atualização de certificado** é exibida.  
![\[Atualizar certificado CA do banco de dados\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-update-multiple.png)
**nota**  
Essa página mostra apenas as instâncias e os clusters de banco de dados na Região da AWS atual. Se você tiver bancos de dados em mais de uma Região da AWS, confira essa página em cada Região da AWS para ver todas as instâncias de banco de dados com certificados SSL/TLS antigos.

1. Escolha a instância de banco de dados ou o cluster de banco de dados multi-AZ que você deseja atualizar.

   Você pode programar a alternância de certificado para sua próxima janela de manutenção escolhendo **Programar**. Aplique a mudança imediatamente escolhendo **Aplicar agora**. 
**Importante**  
Se você tiver problemas de conectividade após a expiração do certificado, use a opção **Aplicar agora**.

1. 

   1. Se você escolher **Programar**, precisará confirmar a alternância do certificado de CA. Essa solicitação de confirmação também indica a janela agendada para sua atualização.   
![\[Confirmar rotação de certificado\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-confirm-schedule.png)

   1. Se você escolher **Aplicar agora**, precisará confirmar a alternância do certificado de CA.  
![\[Confirmar rotação de certificado\]](http://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/images/ssl-rotate-cert-confirm-now.png)
**Importante**  
Antes de programar a rotação do certificado CA no banco de dados, atualize todas as aplicações cliente que usam SSL/TLS e o certificado do servidor para se conectar. Essas atualizações são específicas ao seu mecanismo de banco de dados. Depois de atualizar essas aplicações cliente, você pode confirmar a rotação do certificado CA. 

   Para continuar, escolha a caixa de seleção e escolha **Confirm (Confirmar)**. 

1. Repita as etapas 3 e 4 para cada instância e cluster de banco de dados instância que você deseja atualizar.

------

## Alternância automática de certificados do servidor
<a name="UsingWithRDS.SSL-certificate-rotation-server-cert-rotation"></a>

Se a CA raiz comportar a troca automática de certificados de servidor, o RDS gerenciará automaticamente a troca do certificado do servidor de banco de dados. Como o RDS usa a mesma CA raiz para essa alternância automática, então você não precisa baixar um novo pacote de CA. Consulte [Autoridades certificadoras](UsingWithRDS.SSL.md#UsingWithRDS.SSL.RegionCertificateAuthorities).

A alternância e a validade do certificado do servidor de banco de dados dependem do mecanismo de banco de dados:
+ Se o mecanismo de banco de dados comportar a alternância sem reinicialização, o RDS alternará automaticamente o certificado do servidor de banco de dados sem exigir nenhuma ação de sua parte. O RDS tenta alternar o certificado do servidor de banco de dados em sua janela de manutenção preferida na meia-vida do respectivo certificado. O novo certificado do servidor de banco de dados é válido por 12 meses.
+ Se seu mecanismo de banco de dados não aceitar alternância sem reinicialização, o Amazon RDS tornará visível uma ação de manutenção pendente `server-certificate-rotation` por meio da API Describe-pending-maintenance-actions, na meia-vida do certificado ou pelo menos 3 meses antes da expiração. É possível aplicar a alternância usando a API apply-pending-maintenance-action. O novo certificado do servidor de banco de dados é válido por 12 meses.

Use o comando [describe-db-engine-versions](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-engine-versions.html) e inspecione o sinalizador `SupportsCertificateRotationWithoutRestart` para identificar se a versão do mecanismo de banco de dados é compatível com a alternância de certificado sem reinicialização. Para ter mais informações, consulte [Configurar a CA do banco de dados](UsingWithRDS.SSL.md#UsingWithRDS.SSL.RegionCertificateAuthorities.Selection) . 

## Script de exemplo para importar certificados para o seu armazenamento confiável
<a name="UsingWithRDS.SSL-certificate-rotation-sample-script"></a>

Veja os exemplos de scripts do shell que importam o pacote de certificados para um armazenamento de confiança.

Cada script de shell de amostra usa o keytool, que faz parte do Java Development Kit (JDK). Para obter mais informações sobre como instalar o JDK, consulte o [Guia de instalação do JDK](https://docs.oracle.com/en/java/javase/17/install/overview-jdk-installation.html). 

------
#### [ Linux ]

Veja a seguir um exemplo de script shell que importa o pacote de certificados para um armazenamento confiável em um sistema operacional Linux.

```
mydir=tmp/certs
if [ ! -e "${mydir}" ]
then
mkdir -p "${mydir}"
fi truststore=${mydir}/rds-truststore.jks storepassword=changeit

curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem"> ${mydir}/global-bundle.pem
awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1}{print > "rds-ca-" n+1 ".pem"}' < ${mydir}/global-bundle.pem

for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print')
  echo "Importing $alias"
  keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt
  rm $CERT
done

rm ${mydir}/global-bundle.pem

echo "Trust store content is: "

keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias 
do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'`
   echo " Certificate ${alias} expires in '$expiry'" 
done
```

------
#### [ macOS ]

Veja a seguir um exemplo de script do shell que importa o pacote de certificados em um armazenamento de confiança no macOS.

```
mydir=tmp/certs
if [ ! -e "${mydir}" ]
then
mkdir -p "${mydir}"
fi truststore=${mydir}/rds-truststore.jks storepassword=changeit

curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem"> ${mydir}/global-bundle.pem
split -p "-----BEGIN CERTIFICATE-----" ${mydir}/global-bundle.pem rds-ca-

for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print')
  echo "Importing $alias"
  keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt
  rm $CERT
done

rm ${mydir}/global-bundle.pem

echo "Trust store content is: "

keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias 
do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'`
   echo " Certificate ${alias} expires in '$expiry'" 
done
```

------