Compartilhar via


Noções básicas sobre as mudanças na alteração da AC raiz para o servidor único do banco de Dados do Azure para PostgreSQL

APLICA-SE A: Banco de Dados do Azure para PostgreSQL – Servidor Único

Importante

O Banco de Dados do Azure para PostgreSQL – Servidor Único está prestes a ser desativado. Recomendamos fortemente que você atualize para o Banco de Dados do Azure para PostgreSQL – Servidor flexível. Para obter mais informações sobre a migração para a Base de Dados Azure para PostgreSQL – Servidor Flexível, veja O que está a acontecer à Base de Dados Azure para PostgreSQL Single Server?.

Servidor único do Banco de Dados do Azure para PostgreSQL planejando a alteração do certificado raiz em dezembro de 2022 (12/2022) como parte das práticas recomendadas de manutenção e segurança padrão. Este artigo fornece mais detalhes sobre as alterações, os recursos afetados e as etapas necessárias para garantir que o aplicativo mantenha a conectividade com o servidor do banco de dados.

Por que a atualização do certificado raiz é necessária?

Historicamente, os usuários do Banco de Dados do Azure para PostgreSQL só podem usar o certificado predefinido para se conectar ao servidor PostgreSQL, que está localizado aqui. No entanto o fórum de procura de AC (Autoridade de Certificação) publicou recentemente relatórios de vários certificados emitidos por fornecedores de AC como sem conformidade.

De acordo com os requisitos de conformidade do setor, os fornecedores de AC começaram a revogar certificados de AC para ACs não compatíveis, exigindo que os servidores usem certificados emitidos por ACs em conformidade e assinados por certificados de autoridade de certificação dessas ACs em conformidade. Como o Banco de Dados do Azure para PostgreSQL usava um desses certificados não compatíveis, precisávamos alternar o certificado para a versão em conformidade para minimizar a possível ameaça aos servidores PostgreSQL.

O novo certificado é implementado e entra em vigor em dezembro de 2022 (12/2022).

Qual alteração estava agendada para ser realizada a partir de dezembro de 2022 (12/2022)?

A partir de dezembro de 2022, o certificado raiz BaltimoreCyberTrustRoot será substituído por uma versão compatível conhecida como certificado raiz DigiCertGlobalRootG2. Se seus aplicativos aproveitarem a verify-ca ou a verify-full como valor do parâmetro sslmode na conectividade do cliente de banco de dados, será necessário seguir as instruções para adicionar novos certificados ao repositório de certificados para manter a conectividade.

É preciso fazer alterações no cliente para manter a conectividade?

Não há nenhuma alteração de código ou aplicativo necessária no lado do cliente. se você seguir nossa recomendação de atualização de certificado abaixo, ainda poderá continuar a se conectar, desde que o certificado BaltimoreCyberTrustRoot não seja removido do certificado CA combinado. É recomendável não remover o BaltimoreCyberTrustRoot do certificado de AC combinada, até que seja avisado o contrário, para manter a conectividade.

Preciso fazer alguma alteração nos certificados do cliente

Por padrão, o PostgreSQL não realiza nenhuma verificação do certificado do servidor. Isso significa que ainda é teoricamente possível falsificar a identidade do servidor (por exemplo, modificando um registro DNS ou assumindo o endereço IP do servidor) sem que o cliente saiba. Para evitar qualquer falsificação de possibilidade, a verificação de certificado SSL no cliente deve ser usada. Essa verificação pode ser definida por meio do valor do modo ssl da cadeia de conexão do cliente do aplicativo verify-ca ou verify-full. Se esses valores de modo ssl forem escolhidos, você deverá seguir as instruções na próxima seção.

Recomendação de atualização de certificado do cliente

  • Baixe o AC raiz BaltimoreCyberTrustRoot & DigiCertGlobalRootG2 dos seguintes links:

  • Opcionalmente, para evitar interrupções futuras, também é recomendável adicionar as seguintes raízes ao repositório confiável:

  • Gere um repositório de certificados de AC combinada com os certificados BaltimoreCyberTrustRoot e DigiCertGlobalRootG2 incluídos.

    • Para usuários do Java (PostgreSQL JDBC) usando DefaultJavaSSLFactory, execute:

      keytool -importcert -alias PostgreSQLServerCACert  -file D:\BaltimoreCyberTrustRoot.crt.pem  -keystore truststore -storepass password -noprompt
      
      keytool -importcert -alias PostgreSQLServerCACert2  -file D:\DigiCertGlobalRootG2.crt.pem -keystore truststore -storepass password  -noprompt
      

      Depois, substitua o arquivo de repositório de chaves original pelo novo gerado:

      • System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
      • System.setProperty("javax.net.ssl.trustStorePassword","password");
    • Para usuários do .NET (Npgsql) no Windows, certifique-se de que Baltimore Cybertrust Root G2 e DigiCert Global Root G2 existam no repositório de certificados do Windows, autoridades de certificação raiz confiáveis. Se algum certificado não existir, importe o certificado ausente.

      Banco de dados do Azure para PostgreSQL .net cert

    • Para usuários do .NET (Npgsql) no Linux usando SSL_CERT_DIR, verifique se BaltimoreCyberTrustRoot e DigiCertGlobalRootG2 existem no diretório indicado por SSL_CERT_DIR. Se algum certificado não existir, crie o arquivo do certificado ausente.

    • Para outros usuários cliente do PostgreSQL, você pode mesclar dois arquivos de certificado de autoridade de certificação como este formato abaixo


      -----BEGIN CERTIFICATE-----
      (CA1 raiz: BaltimoreCyberTrustRoot.crt.pem)
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      (CA2 raiz: DigiCertGlobalRootG2.crt.pem)
      -----END CERTIFICATE-----

  • Substitua o arquivo pem da AC raiz original pelo arquivo de AC raiz combinada e reinicie o aplicativo/cliente.

  • Futuramente, após o novo certificado ser implantado no lado do servidor, você poderá alterar o arquivo pem da AC para DigiCertGlobalRootG2.crt.pem.

Observação

Não remova nem altere o certificado Baltimore até que a alteração de certificado seja feita. Enviaremos uma comunicação assim que a alteração for feita, após a qual será seguro para eles retirarem o certificado Baltimore.

O que acontece se removermos o certificado BaltimoreCyberTrustRoot?

Você pode começar a receber erros de conectividade ao se conectar ao seu servidor do Banco de Dados do Azure para PostgreSQL Você precisa configurar o SSL com o certificado BaltimoreCyberTrustRoot novamente para manter a conectividade.

Perguntas frequentes

1. Se eu não estiver usando SSL/TLS, preciso atualizar a AC raiz mesmo assim?

Nenhuma ação é necessária se você não estiver usando SSL/TLS.

2. Se eu estiver usando SSL/TLS, preciso reiniciar meu servidor de banco de dados para atualizar a AC raiz?

Não, você não precisa reiniciar o servidor de banco de dados para começar a usar o novo certificado. Esta é uma alteração no lado do cliente, e as conexões de entrada do cliente precisam usar o novo certificado para que possam se conectar ao servidor de banco de dados.

3. Como fazer para saber se estou usando SSL/TLS com verificação de certificado raiz?

Você pode identificar se suas conexões verificam o certificado raiz ao revisar a cadeia de conexão.

  • Se a cadeia de conexão incluir sslmode=verify-ca ou sslmode=verify-full, você precisará atualizar o certificado.
  • Se a cadeia de conexão incluir sslmode=disable, sslmode=allow, sslmode=prefer ou sslmode=require, você não precisará atualizar os certificados.
  • Se a cadeia de conexão não especificar sslmode, você não precisará atualizar os certificados.

Se estiver usando um cliente que abstrai a cadeia de conexão, revise a documentação do cliente para entender se ele verifica os certificados. Para entender o sslmode do PostgreSQL, revise as descrições do modo SSL na documentação do PostgreSQL.

4. Qual o impacto se estiver usando o Serviço de Aplicativo com o Banco de Dados do Azure para PostgreSQL?

Para os serviços de aplicativo do Azure que se conectam ao Banco de Dados do Azure para PostgreSQL, há dois cenários possíveis e dependem de como você está usando SSL com o aplicativo.

  • Este novo certificado foi adicionado ao Serviço de Aplicativo no nível da plataforma. Se estiver usando os certificados SSL incluídos na plataforma do Serviço de Aplicativo no aplicativo, nenhuma ação será necessária.
  • Se você estiver incluindo explicitamente o caminho para o arquivo de certificado SSL em seu código, precisará baixar o novo certificado e atualizar o código para usá-lo. Um bom exemplo desse cenário é quando você usa contêineres personalizados no serviço de aplicativo, como compartilhado na Documentação do Serviço de Aplicativo

5. Qual o impacto se estiver usando o AKS (Serviço de Kubernetes do Azure) com o Banco de Dados do Azure para PostgreSQL?

Se estiver tentando se conectar ao Banco de Dados do Azure para PostgreSQL usando o Serviço de Kubernetes do Azure (AKS), é semelhante ao acesso de um ambiente de host de clientes dedicados. Consulte as etapas aqui.

6. Qual o impacto se estiver usando o Azure Data Factory para me conectar ao Banco de Dados do Azure para PostgreSQL?

Para um conector que usa o Azure Integration Runtime, o conector aproveita os certificados no Repositório de Certificados do Windows no ambiente hospedado do Azure. Esses certificados já são compatíveis com os certificados aplicados recentemente, o que não exige nenhuma ação.

Para o conector que usa o Runtime de Integração Auto-hospedada em que você inclui explicitamente o caminho para o arquivo de certificado SSL em sua cadeia de conexão, é necessário baixar o novo certificado e atualizar a cadeia de conexão para usá-lo.

7. Preciso planejar um tempo de inatividade de manutenção do servidor de banco de dados para essa alteração?

Não. Como a alteração aqui é feita apenas no lado do cliente para se conectar ao servidor de banco de dados, não é necessário um tempo de inatividade de manutenção para o servidor de banco de dados para essa alteração.

8. Se eu criar um servidor após 30 de novembro de 2022, serei afetado?

Para servidores criados após 30 de novembro de 2022, você continuará a usar o BaltimoreCyberTrustRoot junto com os novos certificados raiz DigiCertGlobalRootG2 no repositório de certificados SSL do cliente de banco de dados para que seus aplicativos se conectem usando SSL.

9. Com que frequência a Microsoft atualiza os certificados ou qual é a política de expiração?

Esses certificados usados pelo Banco de Dados do Azure para PostgreSQL são fornecidos por ACs (autoridades de certificação) confiáveis. Portanto, o suporte desses certificados está vinculado ao suporte desses certificados pela AC. O certificado BaltimoreCyberTrustRoot está agendado para expirar em 2025, portanto, a Microsoft precisa realizar uma alteração de certificado antes da expiração. Além disso, caso haja bugs imprevistos nesses certificados predefinidos, a Microsoft precisará fazer a rotação do certificado o mais cedo possível, semelhante à alteração realizada em 15 de fevereiro de 2021 para garantir que o serviço esteja sempre seguro e em conformidade.

10. Se estiver usando réplicas de leitura, preciso fazer essa atualização apenas no servidor principal ou nas réplicas de leitura?

Como essa atualização é uma alteração do lado do cliente, se o cliente costumava ler dados do servidor de réplica, você também precisará aplicar as alterações para esses clientes.

11. Há uma consulta do lado do servidor para verificar se o SSL está sendo usado?

Para verificar se você está usando a conexão SSL para se conectar ao servidor, confira Verificação de SSL.

12. Preciso fazer alguma coisa se eu já tiver o DigiCertGlobalRootG2 no meu arquivo de certificado?

Não. Não é preciso fazer nada se o arquivo de certificado já tiver o DigiCertGlobalRootG2.

13. Como posso verificar o certificado enviado pelo servidor?

Há muitas ferramentas que você pode usar. Por exemplo, o DigiCert tem uma ferramenta útil que mostra a cadeia de certificados de qualquer nome do servidor. (Essa ferramenta funciona com servidor acessível publicamente; não pode se conectar ao servidor contido em uma rede virtual (VNET)). Outra ferramenta que poderá usar é o OpenSSL na linha de comando, você pode usar essa sintaxe para verificar os certificados:

openssl s_client -starttls postgres -showcerts -connect <your-postgresql-server-name>:5432

14. E se eu tiver outras dúvidas?

Em caso de dúvidas, fale com os especialistas da comunidade no Microsoft Q&A. Se você tiver um plano de suporte e precisar de ajuda técnica, crie uma solicitação de suporte:

  • Em Tipo de problema, selecione Técnico.
  • Em Assinatura, selecione sua assinatura.
  • Para Serviço, selecione Meus Serviços e, em seguida, selecione Banco de Dados do Azure para PostgreSQL – Servidor Único.
  • Para Tipo de problema, selecione Segurança.
  • Para Subtipo de problema, selecione Criptografia do Azure e Criptografia Dupla de Infraestrutura