Alternar o certificado SSL/TLS - Amazon Relational Database Service

Alternar o certificado SSL/TLS

Os certificados rds-ca-2019 de autoridade de certificação do Amazon RDS vão expirar 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 obter 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.

Para atualizar o certificado CA do seu banco de dados, use os seguintes métodos:

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

Pense nas seguintes situações antes de trocar seu certificado:

  • O proxy do Amazon RDS 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.

  • 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 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 #39568.

Atualizar o certificado CA modificando a instância ou o cluster de banco de dados

O exemplo a seguir atualiza o certificado de CA de rs-ca-2019 para rds-ca-rsa2048-g1. Você pode escolher um certificado diferente. Para obter mais informações, consulte Autoridades certificadoras.

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.

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.

  2. 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:

    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.

    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.

  3. 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 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 definir uma substituição de CA da instância que é diferente da CA padrão do RDS, use o comando modify-certificates da CLI.

É possível usa o AWS Management Console 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 AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. 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.

  3. Escolha Modificar.

    Modificar instância de banco de dados ou cluster de banco de dados multi-AZ
  4. Na seção Conectividade, escolha rds-ca-rsa2048-g1.

    Escolher certificado CA
  5. Escolha Continue (Continuar) e verifique o resumo de modificações.

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

  7. 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 ou modify-db-cluster. 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.

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
nota

Se a instância exigir reinicialização, você poderá usar o comando modify-db-instance da CLI e especificar a opção --no-certificate-rotation-restart.

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

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 AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação, selecione Atualização de certificado.

    Opção do painel de navegação de rotação do certificado

    A página Bancos de dados que precisam de atualização de certificado é exibida.

    Atualizar certificado CA do banco de dados
    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.

  3. 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. 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
    2. Se você escolher Aplicar agora, precisará confirmar a alternância do certificado de CA.

      Confirmar rotação de certificado
    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).

  4. 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

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.

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 o mecanismo de banco de dados não comportar a alternância sem reinicialização, o RDS notificará você sobre um evento de manutenção pelo menos seis meses antes da expiração do certificado do servidor de banco de dados. O novo certificado do servidor de banco de dados é válido por 12 meses.

Use o comando describe-db-engine-versions 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.

Script de exemplo para importar certificados para o seu armazenamento confiável

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.

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